NativeND2Reader: Untangle the core interdependencies

Restart the reader refactoring from scratch.  Always recreate
rather than clear the core list so that the reader and handler
don't alter each others' state.  Always get the core elements
at the call site rather than caching to avoid any inconsistency;
this can be improved later.
NativeND2Reader: Simplify slightly while retaining behaviour

Cache the current metadata within loops where this can't
affect the state in wider scopes.  Fix a single regression
getting the wrong element from the handler metadata.
ND2Handler: Duplicate metadata for safety
ND2Handler: Cache current metadata where possible