Add methods to get and set knockback strength in Arrow. Adds BUKKIT-5103
Add setCritical and isCritical methods to Arrow.java. Adds BUKKIT-5113
[Bleeding] Add ProjectileSource interface. Addresses BUKKIT-1038, BUKKIT-1156
[Bleeding] Add setCharged and getCharged to WitherSkull. Adds BUKKIT-3060
Added SpawnReasons for nether portals and dispensers. Fixes BUKKIT-3148

Previously any entities spawned through dispensers (monster eggs) or
by nether portals were given the incorrect SpawnReason of SPAWNER_EGG.
This made it impossible to distinguish what exactly happened in regards
to the creature being spawned.

With the additional two SpawnReasons, plugins can identify sources of
creature spawning more easily and accuratly.