Add Basic Teleportation Events

Adds a basic teleportation cause and the events.
Why are we passing an entity and location to a method _on_ the entity class? I would think this would have the signature `void teleport(Location target)`, or possibly even `Event teleport(Location target)` to get the event that is generated after all its event handlers fire.