PrairieMetadata: add a way to parse new key/values

PrairieView 5.2 stores the key/value structure differently: it uses a
sequence of PVStateValue elements with IndexedValue and SubindexedValue
elements underneath. This commit adds the code necessary to parse such
structures into a ValueTable object.
PrairieMetadata: parse PVStateShard at all levels

There are three levels where PVStateShard subtrees appear:

1) PVScan (the top level)
2) Sequence
3) Frame

Let's parse all of them into separate ValueTable objects.
PrairieMetadata: fall back to ancestor ValueTables

If a Frame's ValueTable (i.e., PVStateShard) does not contain
a requested key, search its parent Sequence for the same.

Similarly, if a Sequence's ValueTable is missing the key,
search the top-level PVScan's ValueTable, too.

This behavior is required to support the new "smaller XML file format"
which has been an option since PrairieView 5.0, and the only option
since PrairieView 5.2.
PrairieMetadata: short circuit single-value tables

When calling value() on a ValueTable, if there is only one entry in the
table, let's just return its value directly. See comment for details.
PrairieReader: purge broken links, add author tags
PrairieMetadata: fix typo in javadoc
PrairieReader: consolidate XML/CFG references

Rather than having separate hardcoded methods, let's just have one
method called "findMetadataFiles" that looks for all the unspecified
ones. And refer to them as "Prairie metadata files" for generality.

This will be useful when we add support for ENV files shortly.
PrairieMetadata: tweak flow of channel parsing

We should at least _try_ to parse the active channels, even if a CFG
file was not present. This will be useful soon, when that information
could potentially come from another source (the ENV file).
PrairieReader: also parse ENV metadata files

Start with version 5.2, the CFG file was replaced with an ENV
that is similar conceptually, but with a revised XML schema.

It does contain many of the same key/value pairs, though, including
the ones in which we are most interested (channels, bitDepth, laserPower
and xYStageYPositionIncreasesBottomToTop in particular), so for now we
parse the metadata into the same config table used by the CFG file.
PrairieReader: fail fast when no active channels

Otherwise, an obtuse exception is raised later in
MetadataTools.populatePixels because sizeC is 0.
PrairieReader: remove unused private method