Boris Johnson says 'hand on heart, I did not lie'