Add negative offset support

Note that this removes the ability to pass what a negative number means in the
Kafka protocol. This means a special Poseidon symbol must be passed instead.