Migrate unlocking feature from old autograder.

This pull requests implements the unlocking functionality from the old autograder. The `Protocol` is not yet implemented (I'll do this in a separate pull request).

Some code for the grading protocol has also been rewritten to be more consistent (including the introduction of an `OkConsole` abstract class).

This resolves #53 .
That allows us to avoid evaluating concept questions as Python. However, concept questions still require some special handling (when `verbose` mode is toggled on, concept questions are still printed out, and need to be formatted appropriately).

One solution is to have subclasses of the `TestCase` object that have all implement a `on_grade()` method (or something with a better name). That way we can make the grading logic general, and isolate type-specific logic in to each subclass.