Reworking to use byte[] keys & values, rather than string. Also a few other cleanups here and there.
Reworked connection handling to use separate send & receive threads, removed use of semaphores as a quasi-lock statement
Replaced IKafkaLog with Common.Logging package.
Reworked how Consumer works.
Reworked some error handling in Connection and Socket classes.
Got unit tests passing more-or-less consistently.
Modified hashing function to actually make sense, and fixed a couple of the tests.