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.
looks like there's still some calls to String.getBytes() without charset