SnapBoost: A Heterogeneous Boosting Machine