Rewrite binary operations implementation

 Previously binary data was stored as `new String(byteArray)` but it is not correct - as stated in String javadoc, it can replace unmappable characters.

As a result, when you save serialized java object it is not possible to deserialize it later.
probably need to specify charset as UTF-8 (or an option to override it) for all getBytes() calls