Initial code commit
Allow DateTime in metadata.
Various fixes

StreamInfo contains the information about a metadata stream and
the offset calculation.

Made BlockMetadata's dictionary public and the Write() return a
StreamInfo and only write metadata if it has any.

Block is now a class to avoid offset issues, shouldn't affect
performance too much. Write() takes a BinaryWriter rather than
a Stream.

Requirement for a struct dropped from TBlockType in Chunk<,>

Chunk<,> initializes all blocks up front.

Properly handle the setter's translation from world-space to
chunk-space.

Chunk<,>'s Write() method uses a BinaryWriter rather than a Stream
Fix chunk loading for negative co-ordinates.

A negative number divided by a negative number is negative, except
when it's an integer and rounds upwards.

Given the x co-ordinate of -64 and a chunkHeight of 128

-64 / 128 == 0
-64 / 128.0 == -0.5
Floor(-64/128.0) == -1

The fix is to floor a division by a floating point number.