Internally implement 1.8 block types

In 1.8, block types were changed to unify both block types and data.

Block types are now represented as an unsigned short:
```
blockType = (char) ((extNibbleId << 12) | (blockId << 4) | blockNibbleData)
```

With this PR, we maintain compatibility with the Bukkit API and only implement this internally.
If metadata was not already 0, the old bits are not cleared. Also metaData should be range checked (or just `& 0xF`'d).