mattdrayer/api-mgr-optional-views: Decoupled api_manager from optional a...

@smagoun @chrisndodge @martynjames @ziafazal  @fredsmith @stephensanchez @clintonb

I've gone through the entire Server API implementation and broken apart the inter-app dependencies at the ORM layer as well as module imports and classes/methods.  These bindings now reside behind app-specific feature flags, so that the api_manager app can be presented on its own for an upstream PR.  

Each feature flag is defined in common.py and can be enabled/disabled in test.py (for unit test runs) or can be overridden via settings in lms.env.json.  At the time of this PR I'm seeing 100% for pep8, pylint, passing unit tests, and unit test coverage with the feature flags both enabled and disabled (in various permutations).

I'm hoping that even with the large amount of altered code, this PR can merge by the end of the week so we can then submit a follow-on upstream PR containing ONLY the api_manager app.  From there we'll submit the various spin-off apps (gradebook, organizations, progress, and projects)

@smagoun, after this PR merges to edx-solutions/master, we'll need to run a regression in the Apros QA environment to ensure everything is stable prior to deploying the LMS to staging/production.


Seems a little odd, empty containers typically are 'False' but the explicit boolean check seems fine anyway.

>>> foo = []
>>> bool(foo)
False
>>> bar = {}
>>> bool(bar)
False