Initial commit of the backend. This also includes necessary changes to
the frontend (cli / model.py). This version has incomplete functionality.

* core/model.py implements a REST client to persist changes implicitly. @save_changes
 decorator should not be used, as save() has different semantics.

* file-based persistence is non-working and should be ripped out ASAP
  (e.g, course-install, "distributable"")

* date and time conversion/serialization is sloppy! Beware

Large TODOS:

* Error handling in the API client. Currently it deals directly with
  Requests, but badly needs to be wrapped.

* backend security model along with user roles, permissions, auditing, API keys
 and much more.

* Bootstrapping and integration of web application (documentation).

* Normalized "person" handling. A polymorphic User class should handle
  student, instructor, grader, etc. This requires some LDAP integration
  also.

* Configuration capability for both UI and backend (e.g., server port,
  api token, database connection string, ...)