Add grading utilities to client.

I've ported over the grading utilities from the old autograder into [grading.py](https://github.com/Cal-CS-61A-Staff/ok/blob/grading/client/grading.py). General utilities that could useful for other protocols are included in [utils.py](https://github.com/Cal-CS-61A-Staff/ok/blob/grading/client/utils.py).

The only "public" members of the `grading.py` module are

* `Test`: an object representing a test. A test is comprised of a name (or multiple names) and a list of suites, among other things.
* `TestCase`: an object representing an individual test case. This object contains input code, a list of expected outputs, teardown code, and other things.
* `run`: this function runs all `TestCase`s inside a given `Test`. It deals with error printing and will (eventually) be able to handle scoring as well.
There should be a way to abstract this out since a lot of your tests have the format:

expr = something
errored = execute expression
check if errored is True/False depending on what was asserted.