Rory McIlroy carded a fine five-under-par third round at the BMW Championship in St Louis to move to 12 under