add test for string options
correctly handle string/binary options

- fix buffer length bugs
- remove unused code paths
- fold string/binary handling into common code
- fix typo in error message

also handle string opts like strings, not binary data

string opts tack on null terminating character, so we can use FFI::Raw's
convenience tostr() explicitly.

using option_len results in the null terminating character being
included in the string (since zmq includes it when calculating the
length)... binary data does not have a null terminating char
use dealer, makes more sense with identity option