Implement a new parsing style

Use a ubyte array instead of a string to transport the board
information around. The new encoding is about 56% of the size of
the previous while encoding the three-move repitition information,
which the previous method did not encode.