Support for ES6 Templates

This pull request is meant to add support for [ECMAScript 6 templates](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings) 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:**
* Testing - can't get enough of it.
* Type checking for tagged template expressions by checking assignability of substitution expressions to respective tag parameters.
* Add typings for the "cooked strings" parameter of tags.
* Improve emit with respect to unnecessary parentheses.
* Improve emit by omitting template empty tails (and maybe heads?).
* Patch up parts of the languages service that don't account for templates.
* Experiment with indentation in the language service.

**What would be nice, but probably won't be addressed here:**
* Better parse errors for places that expect string literals.
* Experiment with brace matching on substitution templates.

**Questions worth asking**:
* Do we want to accept simple (non-substitution) templates in places we accept string literals (i.e. module names, overloading on string constants, etc.)? On one hand, it would seem more consistent with the rest of our language, but ECMAScript 6 does not accept them in property names.
* When indexing with a template literal, should we try to perform a static property lookup?
* Are void-typed items allowed to be in substitution position? Are there *any* restrictions on what can be go in a substitution expression?

*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.*
Thanks @DickvdBrink - I try to keep up that pattern in general. :smile: 

Although, I'm turning this into a straight `return`.