Support registering Metadata Providers. Fixes BUKKIT-3625.

 * implement generic metadata provider registration/unregistration:
   Implementation details are handled cleanly by a support class and the
   world-scoped metadata is handled as well by implementing the registry
   per-class instead of per-object.

 * Keep canonical lists of providers:
   This allows registering providers for any metadatable class, not just
   the base classes available in stores, which will reduce confusion and
   also make it so provider "events" are only called for more specific
   classes if applicable.

* Implement getMetadataManager from the bukkit.Server API