Not use internalNioBuffer() internally by ByteBuf implementations to fix races.

The problem was that when using internalNioBuffer() internally but a user share an ByteBuf by duplicate it and use it on different threads, it may lead to
datacorruption as the buffer is used for get operations.
Use internalNioBuffer() for set operations as those are not allowed concurrently anyway
No need ot create a new duplicate for read* operations
No need ot create a new duplicate for read* operations. Now for pooled impls