MPs have voted to delay Brexit beyond the scheduled date of March 29 amid dramatic scenes in the House of Commons.