Check null before grabbing metadata owning plugin. Fixes BUKKIT-4665

MetadataStoreBase throws a NullPointerException when passed a null value
for setMetaData. The intended behavior is to throw an
IllegalArgumentException. This commit changes the value's null check to
occur before referencing the owning plugin of a value.
Add missing materials to Step. Fixes BUKKIT-4074

When Minecraft 1.4.6 was released, Nether Brick texturing to steps
was added. Minecraft 1.5 added Quartz texturing to steps. When Bukkit
was updated to these version the textures for steps were not applied.

Currently it is not possible to set the texture of steps to quartz
or nether brick. This commit fixes that by adding the respective values
to the allowable materials list.
Fix missing closing bracket in addEnchantment. Fixes BUKKIT-4126

Prior to this commit the message would display as "...(given #, bounds
are # to #". This commit changes that by adding the missing bracket to
the end of the statement. This is strictly a visual error.
Use command block's world for /gamerule. Fixes BUKKIT-3274

In vanilla, gamerules are global, across all worlds. Maps created for
vanilla that use command blocks expect this behavior, which is broken
when they are placed on a world that is not the default world (world #0).

This commit changes that by using the command block's current world when
executing the command, forcing the game rules executed to be executed in
the world the command block is currently in.
Add source encoding to the maven compiler plugin.

This change adds the source encoding to the maven compiler plugin, which
will strictly enforce build consistency on multiple platforms and address
possible compilation issues on some of the source files. The source
encoding unintuitively is system-specified by default.
Deprecate magic values
POM Changes
Measure Timings Duration
Timings Paste Command
Enchanced Timings
Add PlayerItemDamageEvent
BungeeCord Support
Add Arrow API
Add Particle API
Define EntitySpawnEvent and SpawnerSpawnEvent

Defines EntitySpawnEvent and SpawnerSpawnEvent. Adds BUKKIT-267 and BUKKIT-1559
Entity Mount and Dismount Events
Update Depends

- All of these changes have been reviewed to be binary compatible and in general contract compatible with previous versions of the libraries.
Console Command Completion

Implement command tab completion in the console. Adds BUKKIT-4168

To accomplish this 2 changes to Bukkit were required:
- the player check in Command.tabComplete() had to be removed
- the SimpleCommandMap prepends the / only for players
InventoryClickEvent getClickedInventory

Add InventoryClickEvent.getClickedInventory. Adds BUKKIT-4495
Plugins currently have to do the logic themselves on the raw slot ID
in order to determine the inventory clicked. This provides the logic for plugins to
readily identify which inventory was clicked.
Added getAllSessionData() to the Conversation API.