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.