PM warns Hamid Karzai over corruption but says British troops will remain in Afghanistan to fight Taliban threat