Fixed MapGenStructure spigot patch.
Modified Spigot patch to only ignore Mineshaft structure data.

With the introduction of 1.6.4, Mojang added extra structure info to be
saved in NBT in preparation for 1.7. Mineshafts had a ton of data added to them
which caused mineshaft.dat to grow quickly. If this file was a few
MB+ in size, any save would cause threads to get blocked and lag the
server as it generated the new mineshaft.dat file.
To work around this issue, all structure saving info for mineshafts will be
ignored by default. If for some reason you need this turned back on, reenable
save-mineshaft-structure-info in spigot.yml. This patch will be removed in
1.7 as it will no longer be needed.
Block checks for active chunks are done further up the chain by CB. Should fix the odd blocks aren't updating issues.
Missed call to getDisplayerName from Forge.
Fixes #504
Added missed Forge patch in Item. Fixes #512
Updated readme with credits.
Validate slot index before attempting to access it. Fixes #511
Validate view-radius and halt if less than 1. Fixes #503

* Disabled SkipIntervalHandler registration by default. It will now register
itself if tick-interval in mcpc.yml is set to 2 or greater for the specified class.
Added missing registerScheduledTickHandler in previous commit.
Removed some logging stuff that is no longer useful/needed
Apply CME fix to CPS.unloadAllChunks()
More playername updates
Fixes #504 (hopefully)
Few more minor changes to keepSpawnInMemory.

A world spawn will remain loaded if one of the following conditions are true.
1. Forge's keepLoaded is true for the provider.
2. Bukkit's keepSpawnInMemory is true for the world.
Prevent EntityItemFrame from being serialized. Fixes #474, #506, #520

Due to a bug in Gson :
(https://code.google.com/p/google-gson/issues/detail?id=440),
a stackoverflow can occur when gson attempts to resolve a field of
a class that points to itself. As a temporary workaround, we will
prevent serialization for this object until the bug is fixed.
This fixes EE3's serialization of ItemStack.

Thanks to pahimar for helping me track down this issue.
Added null check
Fixes #544
Don't call EntityChangeBlockEvent if CraftWorld is null. Fixes #550
* Added more immunities for entity activation range checks. Fixes #548

* Added missing spigot patch for mobSpawnRange in SpawnerAnimals.
* Fixed forge EntityEvent.CanUpdate with activation ranges.
Add missing patch from previous commit. More spawner fixes. Fixes #548
Refactored BlockPlaceEvent logic to be more efficient. Fixes #465, #525

Previously all block placement for vanilla blocks were being routed
through CraftBukkit's processBlockPlace to handle cancelling the event
properly. This did not work well with forge mods as many overrided
ItemBlock.onItemUse method so we added logic to
World.canPlaceEntityOnSide. While this seemed to be effective for *most*
forge blocks, it was highly inefficient as every allowed block placement
went through 2 actual places: 1 for testing permissions, and another for
the actual place. This caused problems with quite a few blocks such as
MFR's DeepStorageUnit. So instead of trying to hardcode fixes for specific
blocks, I decided to rewrite the logic completely. Now all placement for
vanilla and forge will be handled in ItemStack.tryPlaceItemIntoWorld. The
benefit from doing this is:

1. No more simulated placements for forge block placement which should add a
boost to performance and prevent all future bugs related to placement.
2. All items that place blocks into the world should now be able to be
protected properly which includes FMP, Immibis Microblocks, Mystcraft's
writingdesk and much more.
3. Far less base edits which means less chance to cause bugs in future
updates and higher compatibility with Forge.

The new logic basically is handled in ItemStack.tryPlaceItemIntoWorld with
the following:

Before calling Item.onItemUse, a recording flag is turned on for
World.setData. This essentially allows us to record a blockstate for each
block that is sent through this method as Item.onItemUse is processed.
The reason behind this is certain Items such as ItemBed and Mystcraft's Writing Desk
place an extra block during placement so we need to make sure to capture
all block locations that change for restore. When a block placement event is cancelled,
the captured blockstates are processed and restored to the block that was captured
before the placement happened. Before ItemStack.tryPlaceItemIntoWorld is
finished, the captured blockstate list is cleared.

Thanks to immibis and ChickenBones for giving me ideas for the code
change.
Added patches from Forge for player movement while teleporting
Fixes #568