Add tests

This is the initial pull request for improving the test suite.  There are a few high level things that happened:
- Test runner moved from py.test to nose for coverage support
- Split out test_unit into component parts
- Moved away from binary blobs in test towards struct.pack with comments
- Fixed intermittent failures from test_unit
- Added python-snappy to tox so that snappy tests actually run
- Added test util to created shared code in test suite
- Refactored away _get_conn_for_broker instead of writing a test for it
- Added timeout to _get_conn
- Created a new KafkaError instead of just throwing a raw Exception