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. 
Then this function shouldn't get called; maybe that fact alone calls for an assert (pun intended).