Add basic support for ES6 TemplateLiterals

**rebased for 2.x branch**

These changes are intended to prevent jshint from choking on template literals
when esnext mode is enabled. It has been written to support a sub-lexing
process to allow for further linting in the future. At this time it does not
support escaped string characters with backslashes, due to my limited
knowledge of the template literal syntax.

I am hopeful that this will pave the way for doing more useful linting with
this construct, and to allow jshint to be used in applications which make use
of this language feature.

Closes #1563
Closes #1219