REFACTOR: shutdown procedure

- mprDestroy in cases where it cannot complete due to running threads or services.
- Rename mprRequestGC to mprGC (old name deprecated but supported)
- Rename MprHeap.enabled to MprHeap.gcEnabled
- Clarify mprYield and mprGC flag documentation
- Rename MprThread.waitForGC to waitForSweeper
- Remove MPR_YIELD_BLOCK option - complicated mprYield and not required
- Change mprDestroy
- Return bool if destroy cannot complete due to running threads or services
- Ensure mprGC(COMPLETE) cannot block inside mprDestroy
- Improve and clarify comments
- 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