Make Runtimes and model_datas singleton objects

These both now take XBlocks are the first argument in most methods, and
uses the ids from the block the method is operating on, rather than
baking scope ids into the runtime and model_data objects.

[LMS-827]
Remove experimental AnalyticsDb and progress publishing code
Split xblock.core into several smaller files
Rename ModelType to Field
Rename ModelData to FieldData
Replace Namespaces with mixins

Replace the Namespace mechanism that runtimes could use to inject fields
into blocks with one that allows runtimes to dynamically mix in classes
with both fields and methods. This makes the mixed in fields behave more
like fields in regular blocks, and also makes it possible to add methods
to blocks that use those fields.

Also create an Application class that (at the moment) just has a couple
factory methods for creating the blocks with mixins attached.

[LMS-828] [LMS-829]
Allow clients of Plugin to disambigate multiple matches

Because entry_points allow for name overlap inside a single entry-point
namespace, Runtime Applications using the entry-points need to be able
to disambiguate, if they have a preferred source of plugin. This is the
most generic way of resolving those conflicts, as it gives the caller
the flexibility to change the resolution every time that the function is
called.

[LMS-48]
Add a runtime aggregator object to allow composition of runtimes