Optimize FileChannelJournalSegmentReader channel use
We use FileChannel to maintain our position for a particular reader,
which is a naive implementation.
Since FileChannel's position is tied to the underlying file descriptor,
each such manipulation involves locking and system calls.
Switch to maintaining the position ourselves and using
FileChannel.read(buffer, position), improving performance.
JIRA: CONTROLLER-2094
Change-Id: I7f462f3fd8aa9bc47c16201dd32faeb2a7c18a32
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>