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. 
Yep. This PR is to check what other people think about the change. If everyone is ok with the structure, I will move other types in