Add support for variables in SQL queries (#177)

Fixes #177:

1. Added variable to SQL grammar (:foo), along with tests; discovered boolean literal was missing and added it.
2. Support variable through all of semantic phases, but not in the logical plan compiler.
3. Add method to substitute variables based on type inference with fallback to "string inference" (generalized mapUp and other enhancements).
4. Revamped regression test to support variables, and added new regression test to verify variables work.
5. Added variable support to REPL.
6. Extracted out planner logic from backend and moved into planner.
7. Changed front-end query API to expect `Destination` header and use query parameters as query variables
8. Updated README to reflect new API changes.
Implicit conversions are no fun.

This means, for example, that you can't match against a string value that happens to contain digits, unless somebody (the backend) is doing more implicit conversions, which mongodb doesn't and probably isn't desirable anyway. SQL makes a clear distinction between value types and it seems like we should, too, at least at this level.

Also, query parameters coming from JDBC will have specific types, unless we choose to throw away that information.

How about we just use the SQL syntax for values, and require them to come in that form from the API, at least for now? If we want to give the user some help, maybe the front-end can ask the server to infer the types of the parameters of a query, and use that to drive UI and/or request formatting.