ECMAScript 6 spread and rest support

This PR adds support for ECMAScript 6 style spread and rest operators in array literals and destructuring declarations with down-level code generation for ES3 and ES5.
this doesn't follow the pattern we have elsewhere in the emitter for changing emit behavior based on script target.  In general you would instead have an emitParameter which would do the simple pass-through emitting, and an emitDownlevelParameter which would do the more compex rewriting of ES6 features to ES5 level emit.