REFACTOR: shutdown procedure

- Change mprRemoveItem to tolerate a null list
- Change MprTerminator to take a MPR state first argument
- Call MprTerminator twice with states: MPR_STOPPING, MPR_STOPPING_CORE
- Add Heap.freedBlocks so mprDestroy can monitor final GC progress
- Refactor mprDestroy to invoke terminators twice
- Clarify comments in mpr.h