Refactor common metadata code into base class. Fixes BUKKIT-3624

Implementing the MetadataValue interface is significant work due to
having to provide a large amount of conversion stub methods. This commit
adds a new optional abstract base class to aid in implementation.
Improve speed and memory use of FixedMetadataValue. Fixes BUKKIT-1460

FixedMetadataValue currently just extends LazyMetadataValue with a value
that never changes. While this works it is a lot of unneeded overhead
that causes FixedMetadataValue to be a lot slower and use a lot more
memory than one would expect. To correct this we store the value directly
in FixedMetadataValue and override the the appropriate methods to use it.

Ideally we would modify FixedMetadataValue to no longer extend
LazyMetadataValue as this would give a very large memory savings. However,
this is not currently done for backwards compatibility reasons.
Don't cache metadata store disambiguations. Fixes BUKKIT-3841

The metadata system generates unique keys for metadata entries based on
the subject metadata is being applied to and the name of the metadata
being applied. It was assumed this would be an expensive operation so a
cache was put in place to ensure this was done as little as possible.

In reality this cache only has a benefit when you have a hit rate above
~90% and is otherwise much slower. As the implementation of the cache is
a hashmap of hashmaps it also uses a significant amount of memory which
is not worth it even for the performance increase with a high hit rate.

This commit simply removes the cache which results in speedups for most
cases and large memory savings.
Prevent classloader leak in metadata system. Fixes BUKKIT-3854

Metadata values keep strong reference to plugins and they are not
cleared out when plugins are unloaded. This system adds weak reference
logic to allow these values to fall out of scope. In addition we get
some operations turning to O(1) "for free."
Use utility method for team-join display. Fixes BUKKIT-3997

The method to make a string from a collection of strings already exists
and should be used when adding multiple players to a team.
Consider arguments to team leave properly. Fixes BUKKIT-3994

Two checks to argument length were changed to properly consider if the
sender is a player instead of an off-by-one logical error.
Consider first player name in leave command. Fixes BUKKIT-4051
Correct 1.5 material data. Fixes BUKKIT-4004, BUKKIT-3785
Fix off-by-one error in DyeColor. Fixes BUKKIT-3938
Pulling all pending Bukkit-JavaDoc changes
Updated version to 1.5.1-R0.2 in pom.xml for BETA.
Updated version to 1.5.1-R0.3-SNAPSHOT for development towards next release.
Add inverted flag support to TrapDoor. Fixes BUKKIT-3390
Relax generic types for ConfigurationSerialization

The method signatures are unnecessarily strict for the generic signatures.
This change may cause a compile-time error for extending classes overriding
methods, but no byte signature or compile time call signatures change.
Add ConfigurationSerializable <-> Java Serializable compatibility layer