Happ hits 3-run homer in 8th, Cubs beat Reds 5-4