Tokenizer tests

I really want to get the selectors api figured out before this gets merged.

Everything here, so far, is pretty consistent.

Highlights:

Any of these selectors can be (roughly) expressed as a string in the form:

> `'[all] by locator "input"'`

`all` is optional, but quotes are required for any and all input, for simplicity and uniformity.

Simplicity and uniformity is a bit trickier with selector shorthands. ~~For the most part, it uses the same tokens (if available), but they're doubled if using `element.all`. For instance, `'/xpath'` gets doubled to `'//xpath'` (which is nice), but `'<tagName>'` gets doubled to `'<<tagName>>'` (not so nice).~~ In an effort to keep the shorthand selectors consistent, any `element.all` function shortcut will start with `'all'`. Meaning, `{{data.binding}}` becomes `'all {{data.binding}}'`, etc.

The only exceptions are those based on the pattern established by the `$`/`$$` shorthand selector. This includes `/xpath`/`//xpath`, as well as `element(by.js())`, since it uses the code block backtick `` ` `` character. I thought it made more sense to use the well-known "code fences" operator for `element.all(by.js())` (e.g., ```` ``` ````). These exceptions will still accept `all` as the first word, just as any other `element.all` function shortcut might.

All shorthand selectors are of type string.

Below are the proposed shorthands:



Selector | `element(by())` | `element.all(by())`
---------|-----------------|--------------------
**addLocator** | *not supported* | *not supported*                            
**binding** | `'{{binding.data}}'` | `'all {{binding.data}}'`
**buttonText** | `'button="Button Text"'` | `'all button="Button Text"'`
**className** | `'.class-name'` | `'all .class-name'`
**css** | `'$(.title)'` | `'$$(.title)'`
**cssContainingText** | `'$(.title), "Text"'` | `'$$(.title), "Text"'`
**exactBinding** | `'{{"exact.binding"}}'` | `'all {{"exact.binding"}}'`
**id** | `'#id'` | `'all #id'`
**js** | ``'`return 2 + "2"`'`` | ````'```return 2 + "2"```'````
**linkText** | `'href="linkText"'` | `'all href="linkText"'`
**model** | '`model="modelName"'` | `'all model="modelName"'`
**name** | `'name="someName"'` | `'all name="someName"'`
**options** | *none* | `'opt for opt in options'`
**partialButtonText** | `'button*="Button Text"'` | `'all button*="Button Text"'`
**partialLinkText** | `'href*="linkText"'` | `'all href*="linkText"'`
**repeater** | *none* | `'thing in repeater'`
**tagName** | `'<tagName>'` | `'all <tagName>'`
**xpath** | `'/xpath'` | `'//xpath'`