Boris Johnson vows to ‘keep going’ after double by-election humiliation