Make partition map final and just clear it and copy refs when setting

It might be good to make an immutable copy and return that in the
getter, too.
Just clear the key when initializing the reader

Nothing is done with the key values set here, and it isn't clear what
would be done with it.
Update the MessageDecoder to take a CamusWrapper to set decoded value

The pattern of setting a deserialized value in a given reference instead
of returning a newly allocated object is typical in hadoop. It's what is
done with the key in EtlRecordReader and now this establishes the same
for the record. It basically allows us to avoid allocating a new hashmap
for every decoded value.
Fix bug in compareTo() in partition comparison branch

Also reorganized the method.
Refactor EtlKey class and how it's handled in KafkaReader

This CL cleans up the EtlKey class a bunch, including some legacy stuff
from linkedin we don't care about. I removed the big "set everything"
method and added setters for the individual fields; it isn't necessary
to set everything for each message, since the topic, leaderId, partition
and presumably beginningOffset won't change for each reader. I'm
actually not sure about that last one, because it was being updated to
the previous offset with each request before. Now we just leave at the
initial beginning offset value, which is set from the EtlRequest that
initializes the reader.