Update ok.py with a file content protocol and submission to ok-server

Changes in this branch include:
- a demo_assignment with the new test format
- updated protocol interface
- stateless ok.py that removes all personal info
- logic for finding and reading a _tests.py file containing assignment metadata
- partial implementation with TODOs for sending submissions to ok-server

Comments are most welcome. I think we're making steady progress toward an ok.py that can run tests and submit code. All other features can be added later.
I'm not entirely sure I see a use case for this outside of knowing when requests were received by the server, which I feel should be taken care of at a lower layer. If anything, I'd like to force protocols to not rely on a server response at all because that functionality will break when the student isn't connected to the Internet. And even if it doesn't, it'll probably wait for some timeout to occur when waiting, which might also be bad.

However, I might be missing something obvious here.