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.
Indeed. Tried first without the casts, and it broke everything. All the sand was dirt. It was messy.