Upgrade internal gradient storage

LinearGradient is now a template, avoiding forward declarations
The linear gradient type is now Gradientb to be consistent with other
core types
Now referring to the linear gradient colour list as 'stops' for future
use
Now referring to the linear gradient orientation as 'direction' instead
of angle
Added new type interpolation template with early-out
Fixed memory leak with linear gradient variants