Add InventoryMoveItemEvent. Adds BUKKIT-3765

This event is being called whenever a block or entity (e.g. hopper) tries to
move an item from one inventory to another inventory (one inventory may be
the hopper itself).
Add Thorns to DamageCause - Related to BUKKIT-3505
Add ability to change player item in hand. Adds BUKKIT-3318
Add methods to check for conflicting enchantments. Adds BUKKIT-3830
Allow fishing success rate to be adjustable. Adds BUKKIT-3837
Pulling all pending Bukkit-JavaDoc changes
Add Beacon BlockState for hopper events. Fixes BUKKIT-3932
Add method to update state without physics update. Addresses BUKKIT-3939
Add Effect command. Adds BUKKIT-3763
Ignore all .DS_Store files, not just root folder
Pulling all pending Bukkit-JavaDoc changes
Updated version to 1.5.1-R0.1 in pom.xml for BETA.
Updated version to 1.5.1-R0.2-SNAPSHOT for development towards next release.
Add Scoreboard API and Command. Adds BUKKIT-3776, BUKKIT-3834

The implementation is designed around having both a main scoreboard and
numberous plugin managed scoreboards that can be displayed to specific
players.

Plugin managed scoreboards are active so long as a reference is kept by a
plugin, or it has been registered as a player's active scoreboard. Objects
specific to a scoreboard remain active until unregistered (which remove a
reference to the owning scoreboard), but quickly fail if accessed
post-unregistration.
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.