Re-factoring emitter for emitting ES6 feature natively and down-level

Since majority of ES6 feature will have to emit for ES5, ES3, this pull request is to re-factoring emitJavascript such that we will have separate functions for emit a node in native ES6 and down-level ES5/ES3 without having to check the compilerOption.target for every kind of node. 
`// Here we emit nodes whose output is dependent on the emit target.`

I ***do*** kind of like the idea that we have a single place for where target-specific stuff is performed - that way we can easily see where downlevel isn't supported for a target.

If you are doing this, we should work to ensure that `emitTemplateExpression` works properly here.