Add UnpooledUnsafeDirectByteBuf and use it when low-level access is available

- Remove PooledUnsafeDirectByteBuf.setMedium() which is redundant
- Fix constructor visibility