Tokenize queries and do fuzzy matching

See tests for some examples of how this works. The gist is that typing `q` will offer `sample:GQ` as a completion. After much experimenting, I found that doing fuzzy match on the last token and exact match on the others worked pretty well.

Lots of changes here, but I think overall this results in clearer code (hopefully!).

The `mocha-clean` dep cleans up long mocha stack traces.

Fixes #240 
Doc nit: it doesn't just add it on, it replaces the last token.

"Returns shortStr with the last fuzzy-matched token replaced by the matched token from longStr."