[master]  Cleanup ReadableLogChannel and LogVersionedStoreChannel interfaces

Rationale: there is obviously some conflation between <code>ReadableLogChannel</code> and <code>LogVersionedStoreChannel</code> interfaces - neither purpose is clear and while the functionality they provide is necessary, it is not abstracted correctly.

This PR _tries_ to cleanup those interfaces by extracting and isolating the different abstractions in them, e.g., decoupling the <code>getCurrentPosition</code> and <code>getVersion</code>/<code>getFormatVersion</code> from the read API in <code>ReadableLogChannel</code>.

It also introduces more specialised interfaces like <code>ReadableVersionableLogChannel</code> which exposes log version information when necessary, i.e., when the channel is backed by a log file on disk. In this way we can clean up other implementations, like <code>NetworkReadableLogChannel</code> which does not contain log version info.

Finally, a factory has been introduce to simplify the creation of <code>LogEntryReader</code>s according to the use case.