Only include data from the valid range of a BytesWritable

This issue came up when I noticed that serializing the resulting avro included additional bytes at the end that increase every time the object is deserialized/updated/re-serialized.

I found that BytesWritable automatically resizes its internal buffer capacity to be 50% larger when set() is called, and the method getBytes() returns the entire buffer. From the Javadoc of BytesWritable.getBytes():
/**

Get the data from the BytesWritable.
@return The data is only valid between 0 and getLength() - 1. */
An example of where a BytesWritable gets set with additional capacity is in 
org.apache.hadoop.madred.JobClient$RawSplit (at least in versions 0.20 and 1.03)

This pull request includes two tests that demonstrate the issue and the fix to only include the valid range.