Fix of apparent typo ioe.meesage -> ioe.message
API models need keyword arguments to the constructor
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, ...)
Merge from dev branch
Merge latest from dev again
OVERHAULED: the api and client are finally able to run the whole doc/full_example.sh
Merge private backend branch with dev branch
Simplest possible LDAP integration just to get started
Provide an actual person update validation form
CODE QUAKE: detangle some things, tangle others
Merge branch 'backend' into dev