This commit will likely be split into four parts: one adding GEncoder; one adding GSerializable; and two adding the binary and keyfile encoders. The GBinaryEncoder could be renamed GBufferEncoder or GDataEncoder.