mattdrayer/rebase-20140701: Updated api to support opaque keys

First round of revisions to support opaque keys.  Lots of changes in api_manager app implementation, mostly in courses and users areas.  In addition, some changes were required in the projects app.

People who should probably take a look at what has been modified include:

@chrisndodge 
@antoviaque 
@martynjames 
@ziafazal 
@ormsbee 

@ormsbee, I would also like to include Don and Cale as well for review of the changes I made outside of api_manager and projects.  However, they do not appear to be registered for the solutions account or possibly this repo/fork, so we'll need to get them on the right list(s).

I still have some test coverage to add in order to cover all of the new exception cases that have been introduced, but the good news is that the happy paths are covered and the unit tests are passing.
Ok, I've added the generalization of get_course and get_course_child from the individual views to api_manager.utils.  I kept it as-is in the projects app because I didn't want to introduce a dependency on api_manager into that app (any app, really) -- let me know what you think