Decreased the IBM-PC __kspace size to 2MiB from 3MiB.

* bitmapC:
  * Fixed a minor bug where a NULL pointer could be passed to memset()
    and ensured that any preallocated memory is zeroed out before use.
  * Fixed a bug in the resizeTo() case for a preallocated internal array.
* hardwareIdListC:
  * Added pre-allocation support.
  * Removed __kspaceSetState().
  * No longer needs to use the (error prone) method of checking the lower 12
    bits of its array on freeing, because now it knows when the array is
    preallocated.
* Orientation:
  * Split orientation into __korientationInit and __korientationMain.
  * Re-arranged orientationInit in a major way.

* MemoryTrib:
  * Cleaned up __kspace initialization. Now it is mostly perfectly uniform.
  * Added an initialize() member which cleanly does the preallocation inits
    for internal members.
Kernel can now run to the end of heap init again.