Varint support

Add support for CQL varint type.

Varints are signed integers encoded using two's complement. When marshaling, gocql trims the encoded bytes down to the minimum required to encode the integer value (e.g. if you encode a varint value that can fit in one byte, gocql will actually only send 1 byte). This matches the behavior in the datastax java driver which serializes varints using BigInteger#toByteArray, which returns a big-endian, two's complement byte array using the minimum number of bytes necessary to encode the value.

I incorporated unit test values from a couple other client test suites to spot check that gocql's marshaling lines up with theirs.