Add splitvertical gradient

Adapted from a patch by David Barr, http://david.chalkskeletons.com
Refactor vgradient into partial_vgradient with fromHeight and toHeight