Update to Minecraft 1.8

To build this file you need to have both Spigot and Spigot-API in your
local Maven repo. Spigot's BuildTools.jar does this automatically for
you. See platforms\bukkit\build.gradle for more information.

Lots of small changes, many are straightforward. A few notable things:
* BukkitMaterialData has been rewritten for the new IBlockData class.
The cache now also supports block data, as it can now use the IBlockData
class as a key. Previously, it used Block as the key.
* The default data value is no longer always 0. For example, pumpkins
have a default data value of 2. The code has been updated to only write
block data if it's not the default for the block.
* Block lookups use a little hack (accessing ChunkSections directly) to
look up the block. This saves creation (and garbage collection) of a ton
of BlockPosition instances.
* Mojang made a variable protected in WorldProvider, but we still need
to access this field. Some reflection (based on field type, not name) is
now used. The ReflectionHelper class has been added for this. The other
use of reflection; the village generator, has been updated to use this
new class.
* Mojang made the world.isStatic variable final. The little hack to fix
torches popping off in BO2/3s has been removed. This means that in the
BO3 the Block(...) to place the wall now needs to be placed before the
Block(...) to place the torch correctly.
Add rotations for some new blocks

The new doors, fence gates, trapdoors and stairs were added to existing
switch statements for these blocks.
Standing banners were added to the sign posts code.
Wall banners are close to pistons, but lack a few data orientations so
they have got their own code.
Fix ravine rotation bug

Seems like the localX and localZ values were swapped. Fixes corners
missing from ravines.
Generate red sandstone when caves are cutting through red sand
Update ore generation defaults to 1.8

Most ores (except lapis) have had their size increased by one. Dirt and
gravel have a lower frequency. Andesite, diorite and granite have been
added. The max height as stated in the constants is now actually used,
instead of dynamically calculated.
Fix for higher block ids on Spigot

Spigot treats the bytes returned by generateBlockSections as signed.
Also, blocks with ids higher than 255 (mods) cannot be stored in a byte
at all.

This commit fixes both issues by moving to a short[] instead of a byte[]
array.
Fix for null chunk sections

Sections consisting of only air can be null to save memory.
Add ocean monument generator

TODO: add setting to BiomeConfig for per-biome control of those
monuments.
Implement toggle in BiomeConfigs for ocean monuments

Also changed minimum grid size to 5 chunks.
Use Spigot dependency from my personal Maven repo

To (hopefully) be able to legally post a Spigot jar, the code has been
stripped from the jar: only class, method and interface signatures
remain.

We used this trick earlier back in the ForgeModderTools days to be able
to distribute a copyrighted JAR. Back then we used it to host a
minecraft.jar.

Tests depending on Spigot code won't run without said code, so they now
disable themselves when needed.