Bring XJS types up to date with latest fb-harmony Esprima branch.
Allow the Def.prototype.build method to be called more than once.
Incrementally redefine Function fields across def/{core,es6,es7}.js.
Fix a bug with YieldExpression delegate field default behavior.

The third argument to Def.prototype.field, if provided, should be a
function that can be called to produce the default value.
Define .buildParams as a non-enumerable, non-writable property.
Move .method and .shorthand Property fields into def/es6.js.
Move SpreadElement-related field definitions into def/es6.js.
Move SpreadProperty-related field definitions into def/es7.js.
Add definitions for SpreadElementPattern and SpreadPropertyPattern.

Technically these new types are subtypes of Pattern, and so they can be
used wherever a Pattern is expected. It's up to the other Pattern subtypes
to be more specific about what they expect. For instance, ObjectPattern
requires the elements of its .properties field to be either
PropertyPattern or SpreadPropertyPattern nodes, not just any Property
subtype, which makes ObjectPattern a bit safer than ArrayPattern, which
allows its .elements to be any kind of Pattern.