Reader: remove protected fields

Removed protected fields in favor of getters and setters. Instead of
requiring initialization of protected fields in a constructor, there are
now to use an abstract protected helper method to lean on the compiler
and define what information needs to be provided when implementing a
reader.
Parser: remove protected fields

Removed protected fields that can be accessed through a parser's
Metadata and added API for accessing/setting these fields properly.

Updated all API usage.
Writer: remove redundant ColorModel field

There were two ColorModel fields - cm, and model. "model" had
appropriate getters and setters established, so cm was removed and usage
refactored appropriately.
fix: writer refactor this message
Format: remove protected suffix array

Made suffixes array private instead of protected, moved the getSuffixes
implementation to AbstractFormat, and added a protected abstract
makeSuffixArray method that AbstractFormat subclasses must implement.

This clearly defines what needs to be provided by a Format
implementation, while lazily creating and caching the suffix array when
requested (to avoid repeated small array creation).
Core formats: remove protected fields

Refactored io.scif.formats to remove protected fields.
TiffRational: remove protected fields

Unnecessary protected fields, now private. Can added accessors/setters
if needed later.
AWTImageTools: remove protected field

There was no reason for this to be protected - there are no
AWTImageTools subclasses. If it was intended to be package scoped, that
is terrible. If a use case arrises, this can just be made public,
because it is static final (or an accessor which creates a deep copy, or
something.. anything other than package protected).
SCIFIOCell classes: remove protected fields

Refactored all io.scif.img.cell classes to remove protected fields.
Tools: remove protected fields

Refactored the SCIFIO tools component to remove all protected fields.
IO package: remove protected fields

Refactored io.scif.io classes to remove all protected fields.
fix: parser
AVIFormat: fix initialization

Because of the effectiveAxis logic, adding a length 1 axis without
adjusting the planar axis count is effectively accomplishing nothing,
thus attempting to set the axis type when that axis is not really
considered "present" results in AIOOB exceptions.

Solution is to set the planar axis count, and then set the axis type.
fix: ics format setDest
fix: Convert command, don't allow opening dest
fix: tiffformat - don't close output stream
fix: correct config chain in parser
fix: tifformat - write header if NOT initialized
fix: remove abstractimagemetadata protected field
fix: remove protected fields