First Commit of Animation

Here it is.

I'm feeling pretty good about the API but the real test will be when someone other than me ports to it or builds their own bot with it. 

If anybody is willing to try this out I will bend over backwards to help them. I need the perspective of someone who is new to it.

I've got some basic documentation over in docs/animation.md but it's not really written well for beginners. Once the API is golden I need to write a wiki page that's more of a tutorial. There is a lot to digest here.

This PR is the culmination of all the discussion in #304 also fixes #362
I'm tempted to ask for something completely insane that will really indicate that this is specifically defined as a hook for Animation. In es6-shim, if you look for any place where a [well-known Symbol](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-well-known-symbols) is expected, you'll find a gnarly looking string "placeholder" whose convention was born of the spec's own notation: `@@foo`

- https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L103-L109
- https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L134-L145

Basically, what I'd like to see is this...

In `animation.js`:

```js
Animation.normalize = "@@normalize";
Animation.render = "@@render";
```

Then sometime later, in the same file, these lines: 

`this.keyFrames = this.target.normalizeAnimationFrames(this.keyFrames);`
`this.target.renderAnimationFrame(val);`

Become: 

`this.keyFrames = this.target[Animation.normalize](this.keyFrames);`
`this.target[Animation.render](val);`



Then in `servo.js`:

```js
// add `lib/animation.js`:
var Animation = require("../lib/animation.js");
```

And these lines: 

`Servo.prototype.renderAnimationFrame = function(position) {`
`Servo.prototype.normalizeAnimationFrames = function(keyFrames) {`
`Servo.Array.prototype.normalizeAnimationFrames = function(keyFrames) {`

Become: 

`Servo.prototype[Animation.render] = function(position) {`
`Servo.prototype[Animation.normalize] = function(keyFrames) {`
`Servo.Array.prototype[Animation.normalize]= function(keyFrames) {`


This way, in the not-too-distant future when v8 ships `Symbol`, we can easily swap out those gnarly "@@foo" properties with: 


```js
Animation.normalize = Symbol("normalize");
Animation.render = Symbol("render");
```