Added a .length() function to FileData.
Updated NetworkPacket to use proper .put(byte[]) and .put(ByteBuffer)
size prefixes.
Created ByteArrayBuilder and moved NetworkPacket to be a subclass of
ByteArrayBuilder - furthermore, added ByteDecomposable as a
simplification class which puts byte array resolving in the hands of the
class.
FileData now extends from ByteDecomposable.
.getBytes() has become .getByteArray() and .getAsByteArray() has become
getBytes().
Corrected FileData.from(byte[]) to use .getByteArray() instead of
.getBytes().
Added .getLanguage() and .getMetadata() getters.
FileData.getByteSize() now also includes the length prefix (4 bytes
added).
Added PacketUtils to simplify String size obtaining, and
ProblemSubmission + ProblemSubmissionAck for submitting/checking
problems.