Platform hosted discussion XBlock

This is a PR for discussion XBlock hosted in edx-platform repository.

The idea of hosting discussion XBlock in edx-platform belongs to @jimabramson and @andy-armstrong 

* Affected components: LMS (opt-in), Studio (opt-in)
* Affected users: unknown, most likely none
* Partner information: 3rd party-hosted open edX instance, for an edX solutions client (so will need to get some sort of solution merged in)
* Merge deadline: Nov 3 (soft requirement to minimize code drift, we maintain it on the client fork in the meantime)

Related:

* https://github.com/edx/edx-platform/pull/3829
* https://github.com/edx-solutions/xblock-discussion/pull/28

Original justification from @jimabramson:

"Before getting into too much detail on the code I want to float an idea that Andy and I discussed last night.  What is your reaction to the idea of moving to hosting the discussion xblock inside edx-platform?  My thinking is we could explicitly label the thing unstable / unsupported for general use, and allow it to make some assumptions about the runtime environment (e.g. "DiscussionService") and share frontend assets at runtime, ending the regime of asset cloning/copying.  From then on the block would continue to be used in Solutions implementations, while at some planned point in the future (Q3? Q4? it's not clear yet) we would move it into its own repo in a fully-fledged and officially supported form, with a properly decoupled integration.  I like the idea that over the meantime our teams can have a more incremental collaboration and reuse each other's progress, and that we could easily run experimental courses on the edx lms using this block without impacting the older courses."
nitpick: you can do `Context(context or {})`, which is shorter and more readable.