Better error handling/reporting

This adds the possibility to raise exceptions instead of constantly looking at error states. It also blocks use of "atomic=True" with the binary protocol, because it doesn't seem to support it (from looking at the KT server's code, operations seem to always be non-atomic).