Support for ES6 Templates

This pull request is meant to add support for ECMAScript 6 templates and address suggestion #13.

Right now this branch supports:
* Both simple and substitution templates for all emit targets
* Tagged templates for solely ES6 (and above) targets
* Syntactic highlighting in the LS for template literals

What's left to do is:
* Type checking for tagged template expressions by checking assignability of substitution expressions to respective tag parameters.
* Testing - can't get enough of it.
* Improve emit with respect to unnecessary parentheses.
* Improve emit by omitting template empty tails (and maybe heads?).

*Note: This is an unfinished pull request. While you should feel free to comment on code quality, efficiency, and potential edge cases, keep in mind that certain changes will be coming in periodically.*