Shmem6: support incremental loading in memmgr

This set of changes allows memmgr to load zone data incrementally.  The primary benefit of this feature is that it can now drop the attempt of loading a very large zone if it's canceled due to datasrc reconfig or shutdown.

It also makes memmgr more responsible while loading.  Due to the global locking of python threads, the builder and main threads of memmgr do not actually run in parallel, so unless the load is incremental the main thread could block while the builder thread is loading a large zone.

The first few commits (up to 8ef008d) are just internal refactoring and cleanups of the ZoneDataLoader class.  On top of that, commits up to 2a604ea implement the necessary feature to enable the incremental loading in the C++ datasrc library.  The rest of the changes are its python wrapper and the use of it from memmgr.