Boris Johnson cancels Delhi visit