added colorMiddle functionality; streamlined vertex shader code

* added colorMiddle property (enables three stages of color changing, e.g. red -> green -> blue)
* changed some attribute names for clarity and consistency, e.g. xxxStart corresponding to xxxEnd, and xxxStartSpread since it only affects the value of xxxStart; also changed customColorXxx to colorXxx for brevity
* in the shader code, removed Lerp functions and replaced by the pre-existing mix function (which has the same effect)
* simplified the cases in the "lerping" section of the vertex shader