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
Internal stuff should always have a Decorator regardless in this case. 

Because of the package level annotation `org.spongepowered.api.util.annotation.NonnullByDefault`, we can't set a null `ChunkDecorator`. Regardless of what chunks end up becoming, there intrinsically must always be a `ChunkDecorator`, even in the implementation. 

Plugins can override this with the methods you've provided, but again, there must always be a `ChunkDecorator`.



> (Generate some meta data stored by the plugin during the dost event)

I would think that this event shouldn't be thrown by plugins specifically, but when generators/populators are naturally used by the engine. Plugins seeking to throw these events for "metadata" creation should probably find a different way than having a null populator.