Added Mozilla-compliant AST specification

Generic ECMAScript+JSX parsers and some other tools use extended Mozilla AST format as intermediate representation.

This PR describes those extensions for new spec consumers that want to work with AST.
The spread in CallExpression is not called SpreadElement in the ES6 spec. It doesn't have a name. The destructuring cases are called BindingRestElement or AssignmentRestElement.

I think it was a poor decision to conflate these in the Mozilla AST since they may need to diverge at some point.

In ES terminology an Element is the term for an item in a list where as a Property is an item in an object.

I think that the property case will likely need to diverge at some point when it gets decorators and stuff. This is why I chose to call them SpreadProperty in our esprima AST: https://github.com/facebook/esprima/blob/fb-harmony/esprima.js#L179