Normalize for spacing and upper/lowercase in CQL completions

Highlights:

  * Split the various helper functions into a separate module for easier testing.
  * Completions go through case and whitespace normalization.

The new tests in `query-completion-test.js` should give you a sense of the completions this enables.
Same here. Seems odd to split on whitespace, but then keep the trailing whitespace. Maybe this is necessary for this approach?