Add a test for checking that the required directory count is valid

We can't reliably test for the required directory count being too large,
but the test will fail if the directory count is too small.
MDBService: fix file initialization for mapped files
InCell: put the current file first on the used file list

This is important for datasets with .im files, which are not usable by setId.
L2D: remove unnecessary override of getRequiredDirectories

All files are in the same parent directory, so there is no need to
preserve additional directories.
Visitech: use Location instead of File
Fix Zeiss TIFF reader and CaseInsensitiveLocation to work with mapped files
Prairie: use Location and RandomAccessInputStream instead of File
FV1000: fix handling of mapped files
Tidy up the required directory test
Fix empty string error
Add branch-specific link for downloading the JAR file if unfound
Also modify link in bf.bat
Fix use of File.separator in a regex
Handle Java string comaparison properly
Handle Java string comaparison properly 2
FV1000: fix .pty stream detection for .oib files
PrairieMetadata: keep reference to element parents

Specifically, each <File> now knows its <Frame>, and each <Frame> now
knows its <Sequence>. This will useful for handling the more compact XML
structure of PrairieView 5.x, in which parameter values are inherited
from parent elements where feasible.
PrairieReader: avoid NPE when CFG file is missing
PrairieMetadata: add an attribute accessor method

This returns null when the attribute is not present, rather than the
empty string. It also makes the code slightly shorter.
PrairieMetadata: add data structure for key/values

The key/value pair structure got more complex in PrairieView 5.2. Now
each key can point at either a single string item, or at a table of
values, which can themselves point at sub-tables.

This data structure is intended to facilitate easy management of the
new structure, while still supporting the old structure, too.