bytes<->String conversion fixed

ByteBuffer.array() returns underlying array, i.e. contents of the buffer plus some garbage bytes after or even before real ByteBuffer's data(see offset, limit, capacity). I've replaced NOI's encoders with correct String/byte conversions.