Boris Johnson forced to apologise for “sexist” reference to Labour’s Emily Thornberry