CZI: be less aggressive about closing file handles
Fix typos in null checks
NIOFileHandle: cache file length when possible

This prevents many calls to raf.length() when working with read-only
files (where the length is expected to not change).
Improve SubBlock indexing

This prevents us from having to loop over the SubBlock list
getSeriesCount() * getImageCount() times.
Whitespace fixes
Prevent redundant file locking

FileChannel.read(...) and FileChannel.position(...) each lock the file;
by calling read(...) with an extra argument we now have at most one lock
per call instead of two locks.
Stop parsing segments if a 0-length segment ID is found
Surround readPixelData with an open stream