[Bleeding] Add experimental support for entity portal traveling

EntityPortalEvent is called when an entity is about to portal to a
new location. This event is cancellable on top of being able to
change the exit location.

EntityPortalExitEvent is called when exiting the portal, allowing
for adjustment of the exit velocity.
Merge remote-tracking branch 'upstream/master'