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.
It seems like this method and the one below are copy-pasted in multiple locations?