Fix isCustomAnimationEffect()

We should allow objects with a sample() method to be used as custom effects,
even if that sample() method is on the prototype.
Make use of Timing._invalidateTimingFunction() to avoid code duplication
Rename SplineTimingFunction to CubicBezierTimingFunction
Modify PacedTimingFunction to operate over a range

This will be required to implement chained timing functions.
Merge pull request #452 from steveblock/chainedTimingFunctionsPrecursor

Preparatory work for chained timing functions