Further refined approach to upgrade.
- If intermediary structure does not fit in RAM, fall back
  to a multi-pass approach.
- Make upgrade mostly GC free.
Merge pull request #2257 from jakewins/2.1-even-faster-upgrade

Further refined approach to upgrade.