David Cameron has set Thursday June 23 as the date for the historic referendum on whether Britain should leave the EU, after urging his deeply divided cabinet to support the package of reforms he secured in Brussels.