Merge pull request #452 from steveblock/chainedTimingFunctionsPrecursor

Preparatory work for chained timing functions
Add LinearTimingFunction

Currently we implement a linear timing function by setting
Timing._timingFunction to null and special-casing this in TimedItem. Adding a
separate type will simplify the logic in TimedItem and will greatly simplify
chained timing functions.
Implement chained timing functions

These are specified through the following attributes on Timing ...
- easing: A space-separated list of timing functions
- easingPoints: An array of the end points of the input/output ranges over
  which the timing functions apply. The following keywords are also
  allowed ...
  - distribute: Distribute timing functions evenly in time.
  - align: If the TimedItem with which this Timing object is associated is an
    Animation with a keyframe or path effect, align timing functions with
    keyframes.

See http://dev.w3.org/fxtf/web-animations/#timing-function-chains for details.

Note that alignment with a path effect is not yet implemented.