MPs have voted in prime minister Boris Johnson's social care levy, despite objections over its impact on young and low income earners.