Add Block State API

An API to access a block's state. This is based on the new block state system in 1.8 which replaces the concept of metadata. It provides a type safe way of accessing metadata. This pull request supports boolean, int, string and direction for the types a block state can have. 
- Incorrect use of paragraph tags
- `@code` just makes this messy and unreadable