A determined final-day push saw Zach Johnson clinch the Hyundai Tournament of Champions title by one shot from Jordan Spieth in Hawaii.