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).

**This pull request is not ready to be merged yet**; I still need to write tests for `grading.py` and do some refactoring. I'm going to leave the `Test` and `TestCase` classes as stubs for now and fill them in in a separate pull request.

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.