Implementation of the Teleportation API

*Based on proposal v1*
**Differences from proposal**
---
**Errors**
  * Removed UnsafeTeleport
  * Removed CannotBeTeleported

**Objects**
  * TeleportResult stores the waypoint for to instead of the location
Added javadocs
Minor bugfixes

  * createWaypoint now checks for unsafe location
  * Waypoint now generates UUID on construction