Fix ClassCastException for malformed plugin.yml. Fixes BUKKIT-3563

If the plugin.yml gets loaded but wasn't in the form of a map, the
server would crash. This safely checks to see if it can be cast,
throwing invalid description if it cannot.
Pulling all pending Bukkit-JavaDoc changes
Add PlayerItemConsumeEvent. Adds BUKKIT-2349
Test PluginManager.removePermission

Static methods are death to testability.  However, irrelevant static
methods can be negotiated with until a later time in which they can be
removed.  When instantiating a new Permission object, static calls are
made to the Bukkit class during a recalculatePermissibles logic path.
This recalculatePermissibles call should probably be moved
appropriately, but until the time such testing can be accomplished
itself, these tests work around that situation by simply verifying the
static Bukkit server references are satisfied since what is called as
a result is irrelevant currently.

This commit also updates a few other tests for PluginManagerTest to
work towards the standard of using the Hamcrest unit testing library.
Convert name to lower case for removePermission; Fixes BUKKIT-3726

Permissions are stored as lower case names and referenced as such in all
appropriate methods but removePermission. This changes removePermission
to also convert names to lower case to be consistent with the rest of
the API.
Removed superfluous recalculation call; Fixes BUKKIT-3728

The permission attachment interface provides two methods each for setting
and unsetting permissions. Each one also provides an extra call to the
recalculatePermissions() method on the permissible, which degrades
performance.

This commit removes the duplicate call to recalculate permissions.
Update Bukkit for Minecraft 1.5
Use proper naming convention for boolean methods.
Moved all specific minecart entities to sub-package.

This change is breaking for the new API for 1.5, including the interfaces for
the three new Minecart types and the name of the previously TNT_MINECART
material.

This change also deprecates the two previous specific minecart types located
in the org.bukkit.entity package. This deprecation is not a breaking change
and will still be internally supported.

Each minecart type has new javadoc to be slightly more descriptive. Included
with this are specific references to the interface for each respective
EntityType entry. Another package-info.java file has been included as well.

All specific minecart types extend minecart, each with a more descriptive
name. The naming will also follow the old convention. In addition, the
minecart with no specific designation is now more closely referred to as a
rideable minecart.
Validate method parameters when registering events. Fixes BUKKIT-3779
Merge remote-tracking branch 'upstream/master'