Hanson holds off McIlroy by one shot to win BMW Masters in Shanghai