Refactored entity teleport and respawning logic. Fixes #1429, #1439

Prior to this commit, all player teleport/respawn logic would lead to one
single method. This caused various issues over time as vanilla seperated
these methods to make everything more "sane". This refactor reverts back
to how vanilla originally handled it. The new logic will work as follows :

1. If a player comes in contact with a portal, the
transferPlayerToDimension method will be called. This method is not
bed-aware.

Note: The only exception is when a player returns from the end as it will
not call this method but rather respawnPlayer instead.

2. If a player dies or returns from the end, the respawnPlayer method will
be called. This method is bed-aware.

3. Plugins, such as MultiVerse, that call CraftPlayer.teleport will use
the respawnPlayer method to be bed-aware.

Other changes included with this commit :

* Moved PlayerChangedWorldEvent to FMLCommonHandler to handle mods such as
Mystcraft that do not use ServerConfigurationManager.

* Cleaned up player container listener logic. If container listener
exists, we will simply inform client of any detected container changes.

* Added thread-safe patch for iterating loaded chunks in ChunkProviderServer

Overall, this new commit will add better compatibility between Forge and
Bukkit when teleporting a player to a dimension.

As this commit brings forth a pretty big change to transport code, it is
recommended to take a complete backup before using as there may be issues
that were not discovered during testing.