VirtualHandle: throw UOp on read/write

It is very misleading to return default values (0's) for the various
read methods, or to allow "writing" without actually writing anything.

Instead, it makes much more sense to throw
UnsupportedOperationException. Note that seek and resetStream are
allowed.
LocationService: don't warn on VirtualHandle

There are times when a VirtualHandle is exactly what we expect to create
(e.g. for FakeFormat or OMEROFormat).

So instead of logging warnings, just continue as normal. As
VirtualHandle now throws exceptions on unintended functionalities, we
will get appropriate failures if someone does try reading or writing to
the handle.
Merge branch 'virtual-handle-exceptions'

Refactored the way VirtualHandles are treated and behave to be more logical.

Exceptions are now emitted when unintended API is called, and there is no
warning any more just for creating a VirtualHandle.