Added initial google protocol buffer version of the world file format.
The current format contains data not even available to the engine yet,
in addition to being more expandable if I need to add more info.

Still need to rip out all serialisation and replace it with converting
to/from proto form.
Not compiling, but initial runthrough of making the facade class for
using the protocol buffer version is done. Need to tie it into rest of
system and test.
Removed entire concept of serializable and entire class set of Encoded
forms. Removed inflateFrom methods in all normal classes. EncodedWorld
is now the only entity responsible for encoding/decoding all parts. It
is sectioned off in an easily readable fashion, and this means
encode/decode code is removed from classes it should never have been in.

However, Still need to actually test saving/loading many different
worlds to see if anything was missed.
Forgot to remove calls in WorldIO to object streams. Replaces them when
basic file streams and added Save method to EncodedWorld.
Fixed issues regarding hazards and conveyers not properly storing their
id in Tile.

Tested loading saving worlds with multiple hazard types, conveyers,
block types, sprites, bonzo placements, and everything appears to be
saving and restoring properly.

It's done. The new save file format. Levels can now be created without
fear of them breaking when new stuff is added.