marshals: Correct writing FixedString fields

If the string didn't match the length of the fixed string we were
previously causing an exception, assuming that ByteBuffer.put would Do
The Right Thing.

Turns out this is a little more complex. In this patch, we employ
System.arraycopy to utilise the backing buffer of the field, zero
filling it before copying data.
image-util: Adds writeImage method

This method simply mirrors readImage, converting a BufferedImage into a
byte[] using a specified format.
StringUtil: Adds Iterable handling