Use a global cache for mixologist generated classes, since they are now keyed by the base class and mixins
Merge pull request #105 from cpennington/global-mixologist-class

Use a global cache for mixologist generated classes, since they are now keyed by the base class and mixins
New XML parsing machinery.
UsageStore abstract interface
Use the new Plugin injection instead of @patch
XML serialization: outbound half.
Simplify the HTML in/out: now need an <html> tag.
Make usage_store and field_data required to construct Runtime.
construct_xblock et al, can now take an optional field_data to override the one stored on the runtime.
Go back to a classmethod for parsing.
Merge pull request #86 from edx/ned/new-xml

New XML parsing
Duplicate-aware testing mechanism

The old extra_entry_points couldn't register two classes under the same
identifier. We're going to need that for testing.
Don't tolerate ambiguous plugins

If two classes are registered with the same plugin name, don't just pick
one at random, raise an exception.  This silent error wasted half my day
yesterday... :(
Merge pull request #106 from edx/ned/dont-tolerate-ambiguous-plugins

Don't tolerate ambiguous plugins
Pylint and pep8 fixes.
Put all the nose.tools pylint noise in one place.
Merge pull request #107 from edx/ned/cleanups

Move nose.test pylint craziness into one place.
Add thumbs static files to its setup.py so that they get installed
Merge pull request #109 from cpennington/thumbs-package-data

Add thumbs static files to its setup.py so that they get installed