Introduce FunctionBlock tree and refactor to share more code

This also cleans up some of the ParseTree is* functions to better match the ES6 draft.

Also introduces ParameterTransformer which handles the prepending of statements to the function body for destructuring, rest and default parameters.

Fixes #287

Review URL: https://github.com/google/traceur-compiler/issues/290

Closes #290, closes #287.
Declare temp vars in the closest function scope
Rebase