Make VehicleCreateEvent cancellable

Previously, this was impossible, because the event was fired in the constructor for EntityBoat and EntityMinecart. So, we call lthe event where the entities are created, allowing plugins to determine whether or not they can spawn. This includes being placed by a player, being dispensed, and being spawned in the world.

There is another functionality here, and that includes getting the reason for the vehicle being created. The bukkit commit explains more.

Bukkit-bleeding commit that adds the cancellation here: https://github.com/Bukkit/Bukkit/pull/725