Add basic Location interface to work in coherence with World and Chunk i...

...nterfaces.

There are certain design decisions made with this commit that require discussion. For one I am not a fan of the way certain API's treat the add/subtract systems. I feel that when adding two locations together the original object should not be modified and a new object should be returned.  If someone wishes to do `location.add(0, 1, 0)` and use `location` they have to worry about cloning the original `location` before calling the `add(0, 1, 0)` operation on it.

This interface links the `Chunk` and `World` interfaces laid out already.  No compliments to a `Block` system have been put in for this interface yet, as there might need to be some separate discussion about how to treat the `Block` interface.  Can come back and add in the appropriate methods relating a `Location` to a `Block` later.