servers: Use a storage container (shard) per StorageThread.

Each StorageThread is responsible for a subset of fileIds.
To simplify concurrent access, the InMemoryStorageLayout is
using a storage container or shard for each StorageThread.
Those containers can be accessed from the according Thread
without synchronization.
servers: Set initial object capacity to 1024 and refrain from setting zeros for padding objects.
servers: Use intermediate byte[] buffer to copy data from InMemory ReusableBuffers.
servers: Use byte[] arrays to store InMemory data.
servers: Ensure DirecteByteBuffers are used for the InMemoryStorage. This is bypassing the BufferPool.