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 
There's no reason this needs to be out here—you can move line 82 into the j-loop's scope, and not leak index vars outside of their loops.