FormatReader: core is a list, not an array

This PR changes the ```CoreMetadata core[];``` in FormatReader to ```CoreMetadata<ArrayList> core;```.

This has been rebased onto current develop.  There are still a few test failures for a few specific readers, so it's not ready to merge just yet.  Opening the PR for comments since it's quite a large patch.