Make toByteBuffer method return a read only representation which 'may' avoid a copy

In ref to issue #12
ByteVectors generated from a ```ByteBuffer``` or an ```Array[Byte]``` will avoid copying the underlying structure when calling ```toByteBuffer```.

Note: to keep the underlying data structure immutable and avoid making a copy, the returned ByteBuffer is now read-only.