Bayern see off Frankfurt fightback to stay four points clear