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 template parse/emit solely for ES6 (and above) targets.
* Syntactic highlighting in the LS for template literals
* Completion lists in substitution position.

**Things that will be done in a separate commit:**
* 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.
* Patch up parts of the languages service that don't account for templates.
* Better parse errors for places that expect string literals.
* Experiment with brace matching on substitution templates.
* Experiment with indentation in the language service.

**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?
* Do we want type arguments on a tagged template?