FormatTools: assertId checks Objects

There was no reason to assertId on Strings only. This is just a null
object check, and since we now use RandomAccessInputStreams
predominantly, it makes sense to take an Object instead - allowing
either a String or RAIS.

Eventually this logic will go away when we refactor for IDs anyway. This
prevents inevitable NPEs when the RAIS is null, and it should be null,
but RAIS.getFileName() was being checked.
ImgSaver: create destination ImageMetadata

When translating from an ImgPlus to a SCIFIO metadata, ensures that the
destination metadata has the correct number of ImageMetadata objects.
FormatTools: split checkPlaneParameter method

Split into a checkPlaneForReading and checkPlaneForWriting.

The check for Reading is identical to the previous checkPlaneParameters
method. For writing, the stipulation that the Metadata must have a
non-null source is removed (as the "source" of the Metadata is
irrelevant).
AbstractWriter: assertId before writing

Added a check to ensure the RAOS attached to a writer is non-null before
writing.
ImgSaver: fix composite channel count handling

Corrected how ImgSaver was using its source img's compositeChnanelCount
(which it wasn't using at all).

It now populates ImageMetadata using its source img, then if the
compositeChannelCount is > 1, the Channel axis length is updated (and
split into two axes if not all channels are to be composited) and
updates the planar axis count.

The actual saving algorithm then also needed to be updated to
consolidate all composite channels for each plane and write them out as
a single SCIFIO plane.

The SCIFIOMetadataTools API was modified slightly to facilitate these
changes.
ImageIOFormat: populate img on translation

The ImageIOFormat translator was setting some metadata, but not
populating the actual BufferedImage of the destination Metadata. Now,
the source Metadata is used to generate a blank BufferedImage, which
provides information that was previously being missed (e.g.
RGB/interleaved information).

This will fix issues with ImageIO formats, such as JPEGFormat.
NativeQTFormat: use lazy compression detection

The NativeQTFormat writer had a constructor that attempts to use its
context, which is not set during invocation of the constructor.

The context was being used to determine supported compression types.
Instead, now we simply override getCompressionTypes() and if the
compression types are null, we can safely use a context to make the
check.
QTFormat: fix typo

Added a missing '.' in the javadoc.
QTFormat: fix writing

Translation to QTFormat was broken as the Metadata CNAME was not updated
after moving the QTFormat to the io.scif.formats.qt package. This has
been updated.

There were several fixes to the writer itself:
* converted '/' use to File.separator
* corrected width/height extraction to use actual x/y indices
* subtract 8 when setting the pixel bytes size (size, in bytes, of the
  pixels in this image). The size field includes the length of the size
  and lenght fields themselves (both 4 bytes), causing an "off-by-8"
  error when reading.
Writer: fixed interleaved usage

Removed the interleaved field from AbstractWriter. It is redundant given
attached Metadata, and was not being used or set correctly, and the API
to use it correctly did not exist.

When interleaved is needed, the interleavedAxisCount is now checked
instead.
ImgSaver: corrected bitsPerPixel use

Value was "bitsPerPixel" but being used as "bytesPerPixel". Corrected
to actually be bytesPerPixel now.
FormatTools: fix javadoc

Was referencing outdated id field "currentId", which was previously
removed.  Corrected to just "id".
AVIFormat: match latest Bio-Formats

Updated the AVIFormat's reader code to match the latest Bio-Formats, to
fix potential bugs.
FormatTools: fix plane size calculation

When computing plane size with a given width and height, the other
planar axes need to be considered as well. It's assumed that they are
all read from [0-length) for the given plane.