Model and submit API updates

NOTE: Not ready for merge because tests are incomplete, but I need to stop for the day, so sharing progress.

Changes to model and submit API that make submitting straightforward. Submission is the most common action, so I rewrote the model such that submitting doesn't need to change User or Assignment records.

Per Stephen's suggestions, all API code is back in api.py and the NDB interface is an object. Comments are welcome.

Testing is incomplete, but I won't get to finish it until tomorrow. 
I think it might be a bit problematic to store the Submission with it's submitter set to some bogus user. Why don't we just set the user to None?

Although there wouldn't be a parent key then... is that why we have a bogus user?