UK prime minister calls Nigel Farage a ‘snake oil salesman’ in speech aimed at party’s working-class base