[Bleeding] Add support for ThrownExpBottle and Fish to launchProjectile(...). Fixes BUKKIT-1536

Previously, trying to launch a ThrownExpBottle or Fish projectile would
result in an IllegalArgumentException. This commit adds support for both
ThrownExpBottle and Fish, which means that all current projectiles are
now properly supported by this method.
Re-add EntityShootBowEvent lost in e93a3eb3b4c5234e3e3936bc697d566a42d3b30e. Fixes BUKKIT-4214

In the 1.2 update for CraftBukkit, a missed diff resulted in Skeletons no longer firing an EntityShootBowEvent when they shoot an arrow.
[C+B] Add methods to get and set arrow knockback. Adds BUKKIT-5103
[B+C] Add setCritical and isCritical methods to CraftArrow.java, Adds BUKKIT-5113
Add files for diff visibility.
[Bleeding] Implement ProjectileSource API. Addresses BUKKIT-391, BUKKIT-1038, BUKKIT-1156
[Bleeding] Implement setCharged and getCharged for WitherSkull. Addresses BUKKIT-3060
[Bleeding] Implement setSignalDestination and getSignalDestination in EnderSignal. Adds BUKKIT-XXXX