treated filenames as 'byte streams', per the git spec
added check for null bytes in file names
implemented support for local system filename encoding
implemented hashCode and equals
added testWriteBlob