Extended World API

Adds a lot of methods to the world and chunks as discussed here: https://github.com/SpongePowered/SpongeAPI/issues/256

**Small Overview:**
- `Server`
  - `createOrLoadWorld(...)`
- `Events`
  - `ChunkPreGenerate/Populate/DecorateEvent`
  - `ChunkPostGenerate/Populate/DecorateEvent`
- `StorageContainer`
- `World`
  - `getStorage()`
  - `getExistingRegions()`
  - `getExistingChunks(...)`
  - `getChunkData(...)`
  - `deleteChunk(...)`
- `Region`
  - `getStorage()`
  - `getExistingChunks(...)`
- `Chunk`
  - `getWorld()`
  - `getChunkData()`
- `ChunkData`
  - `get...Position(...)`
  - `getChunkState()`
- `ChunkState`
  - `NOTAVAILABLE`, `GENERATED`, `POPULATED`, `DECORATED`, `LOADED`
- `ChunkGenerator/Populator/Decorator`

RFC
If something happened in the creation process, I wouldn't fathom it to be an IllegalStateException explicitly... Perhaps rephrase as `IllegalArgumentException` if the world already exists. 

Plus, to be honest, we should be separating, from an API standpoint, creating a world and loading a world.

If loading a world throws an exception, then the implementation should be allowed to make the decision to create the world if necessary. Whereas creating a world that already exists, should throw an exception or return the already loaded world. (Up for debate, but honestly, some discussion required)