Refactor storage dir

I propose that we make `StorageDir` the entry point and drop `BlockHandler`.  The core reasons for this are that:

`BlockHandler` is the same thing as java's `Channel`.  Easier to use one std convention than create a new one.
`StorageDir` is the main entry point anyways, since the path is relative to the tier, so `BlockHandler` can't be the gateway since it's path depends on the `StorageDir`.
lets leave zero-copy to performance tests to show results.  There are costs for using off-heap buffers, so should back up usage with data.

Also, when tiered storage integrates with netty, ByteBuf may give even more advantages.