Remove many of the metaclasses from XBlock.

The majority of our metaclasses existed for one purpose: To add the
same variable to each created class that wouldn't be affected by
inheritance. For instance, a class might need to collect information
about which services it was requesting, and without a metaclass,
that _services_requested variable would be shared among all of the
subclasses of the RuntimeServicesMixin.

The second use of metaclasses was to add names to all XBlock Fields,
because those names are available at class construction, but not
to the Field object directly.

This commit removes the first class of metaclasses in favor of the
@class_lazy decorator, which calls a method one time per class, and
then returns the results of that method for every future access
of that class attribute.

The second class of metaclasses was abstracted into a single metaclass,
NamedAttributesMetaclass, which will add a __name__ attribute to all
class attributes that are instances of Nameable. This should make
it easier to provide new and different types of declarative XBlock
interfaces in the future.
Merge pull request #278 from cpennington/fewer-metaclasses

Remove many of the metaclasses from XBlock.
JSON deprecation warning cleanup

* Reduces number of warnings are generated for the same issue.
* Puts them in warnings.warn (instead of logging).
* Makes them a DeprecationWarning on the caller.
Merge pull request #238 from edx/pmitros/warning-fix

Warning fix
Aside import/export
PLAT-220
Fix get_aside to compute the definition id correctly
fixup! Fix get_aside to compute the definition id correctly
fixup! Fix get_aside to compute the definition id correctly
fixup! Fix get_aside to compute the definition id correctly