Implemented majority of course management interface.

The following pull request contains the majority of the course management interface implementation. The only thing in that module that remains is an interface to manage course constraints.