Pull out most of the "tinyquery" module into "evaluator"

"tinyquery" should only have top-level things, but the whole evaluator crept
into it, so this commit splits that part out into its own module.
Add some skeletons for a fake BigQuery API client

Not really usable yet, but this should make things not immediately fall over
when trying to use TinyQuery in place of real BigQuery.
Move the API client a little closer to being usable

-Change name of internal types to match what's returned by the API.
-To avoid a dependency on the actual API client, use a FakeHttpError class and
recommend that people mock it out with the real thing if their code catches it.
-Move Table to tinyquery, since the evaluator is more concerned about contexts
than tables.
Add basic table management routines

There are still lots of fields missing, but the basic ones should be there.
Implement basic versions of query and copy jobs

It's now possible to insert query and copy jobs (which runs them synchronously)
and get the status later if we care, and get query results in the format
returned by the BigQuery API.

This also required dot-separated table names for the first time, so I added them
to the parser.

When I was writing this, I realized that tables and contexts have a different
format for column keys (contexts use (table, column) pairs and tables just use
column names), so I fixed up some of the documentation to be consistent with
that.