Change the order for pixel spacing to make it more robust.

I didn't like the if/else approach of getting pixel spacing.  Just
because the file has SharedFunctionalGroupsSequence, that doesn't
guarantee that the PixelSpacing isn't stored in the root (well, I
guess it does according to the standard, but I'm paranoid about
files that might not follow the standard to the letter).
Add a heuristic for setting slice position to instance number.

For files that cannot be sorted by slice position because the slice
orientation changes, and that do not provide any slice index, we
can generate a slice index from the instance number on the assumption
that if the time index doesn't change, then the slice index should.

The files that need this the most are navigator scans, but any scans
that cannot be sorted by ImagePositionPatient should benefit.