A cross-party alliance defeated Boris Johnson in parliament on Tuesday in a bid to prevent him taking Britain out of the EU without a divorce agreement - prompting the prime minister to announce that he would immediately push for a snap election.