Byte code serializer and deserializer

Compiled byte code can now be saved to a Writer and subsequently
restored via a Reader. Useful for compiling source to byte code once
and saving the results to persistent storage.

Fixes #46

Tests pass