This commit sees the foundational work for beginning to do process spawning
completed.

processStreamC, containerProcessC and containedProcessC have been implemented.
^ The changes to the layout of the process class type architecture have
  necessitated a series of ripple changes to the tree, so a lot of files have
  been touched in this commit.

* Revamped vSwampC in keeping with the new design plans for a placement
  allocator in the VMM.
* Memory Tributary:
  * Added a MEMTRIB_GETFRAMES_FLAG_NOSLEEP flag to all PMM functions.
    ^ Stubbed.
    ^ Causes the PMM not to sleep the calling thread if no physical memory was
      found.
  * memoryRegionAlloc() now takes a "flags" argument.
  * Memory Tributary now holds an rwLock which is used to serialize attempts to
    change the kernel's top-level page tables.
  * Memory Streams now correctly only map a process' pages as SUPERVISOR if the
    process has EXECDOMAIN_KERNEL privileges.
* __korientation: Now reaches the end of __korientationMain once again.
* Updated placementAddresses for platform x8632-ibmPc.
* IBM-PC:
  * Memory Regions:
    * Changed the x86-32-PAE PDP pool to 0x700000, 1MiB large.
    * Added memory region #define constants.
* VaddrSpaceStreamC / VaddrSpaceC:
  * There is no longer any need to pass level0 pointers and physical addresses
    around in these classes' constructors.
  * vaddrSpaceC objects automatically allocate page tables for their processes
    on initialize(), and automatically clone the kernel's address space into
    them.
  * The kernel vaddrSpaceC is now dynamically initialized at boot.
* Processes and Process Tributary:
  * All container processes now take an argument for the NUMA address space they
    should clone into themselves.
  * Created distributaryProcessC, derived from containerProcessC.
* Fixed a bug in numaMemoryBankC where an initialize() function was being called
  inside of its constructor.
* Platform x86-32/IBM-PC:
  * Improved commenting on the kernel page tables for this platform.
  * Cleaned up the CPU-wakeup ID mapping entries.
Kernel can now spawn new address spaces, and switch to them without issue.

* Walker Page Ranger: Now checks for and propagates changes to the kernel's
  top level address space table.
  ^ Does not yet support NUMA multiple address spaces.
* x86-32 page fault: Now demand maps any propagation patches required for
  non-kernel process address spaces.
* Memory Tributary: Removed the __kvaddrSpaceLevel0Lock.
* Made QoL changes to the type declarations of the kernel's page tables for
  platform x86-32/IBM-PC.
* Fixed a bug caused by the previous bad type-declaration of the above.
More work on process spawning.

* Kernel now parses command lines, supporting backslash escaping and quote
  escaping.
* Generates argument strings.
* Untested implementation of an environment string parser.
* Userspace process swamps now begin at 0x100000 instead of 0x1000.
* Implemented strnlen[|8|16].
* New ERROR_* value, ERROR_LIMIT_OVERFLOWED.
* Process arguments now have a maxlength of 32,700 ucs-8 chars.
* Syscalls getProcessFullNameMaxLength(), getProcessArgumentsMaxLength().
* processTribC::SpawnStream(): now returns error_t and takes a pointer to
  a processStreamC for the second return value. Also has been slightly
  re-designed.
* Wrote a small script to grep the source for #ifdefs, as part of an effort to
  clean up the use of #ifdef in kernel source.
* New ERROR_* value: ERROR_INVALID_FORMAT.
* Environment variable string parsing implemented.
* Some initial environment stuff.
* Cisternn no longer exports a bunch of unnecessary categories.
* All objects within a processStreamC are now properly initialized.
* Argument strings are now required to be NULL terminated.
* Fixed some negligence in Timer Trib initialization where we weren't
  initializing the kernel's Timer Stream.
A good bit of portability work on the kernel tree. Began using the GCC
freestanding headers (as I should), and used uintptr_t in one or two places.
A mass-rework of the use of uarch_t in the kernel will be done later on,
substituting uintptr_t for uarch_t where appropriate.

* Removed all of the kernel-private freestanding headers.
* Kernel now makes use of NULL (subsituted in by __KNULL).
* Kernel now makes use of the compiler's size_t.
* Using the compiler's va_list, va_* infrastructure, removed the kernel
  equivalents.
* Processes/Threads:
  * Now processes' and threads' "id" member holds their private ID within their
    own limited scope, and the full ID of a thread is given via getFullId().
  * Kernel can now spawn very basic processes.
    ^ No address space switching on thread switch.
  * Prototypes for processTribC::spawnStream() and spawnThread() changed to
    return a pointer to the new object.
    ^ The userspace syscall wrappers will convert this into a process/thread ID.
* x86-32: Fixed a bug in the GDT code where the structure was not fully filled
  out.
* IBM-PC Firmware:
  * Fixed a warning which may have introduced a bug into the library.
  * Fixed a series of unused variable warnings.
* SwampInfoNodeC: Fixed a bug in the comparison operators.
* Increased type safety in memoryStreamC::memAlloc().
Fixed a small bug in the MM layer that could have been explosive as time went
on, and now the build system supports Clang++. The kernel builds without many
warnings, but it does not run very far.

* Build system: Corrected the compilation options for Clang.
* __kclasses:
  * bitmapC: Implemented dump().
  * debugPipeC: New config option CONFIG_DEBUGPIPE_STATIC which can be used to
    enable printing when there is an issue with the kernel MM layer.
  * slamCacheC:
    * Can now be initialized to allocate from the kernel memory stream OR
      Memory Trib's rawMemAlloc().
      ^ This change has been made in anticipation of a switch-over to the slam
        caches for vSwampC, so that we no longer need to use the (slow)
        __kequalizerListC for swamp node allocation.
    * Improved and fleshed out dump().
    * Increased type safety usage.
  __kequalizerListC:
    * Implemented dump().
    * Fixed a state machine anomaly, where nFreeEntries wasn't being updated in
      the page blocks when entries were removed.
    * Fixed bugs in addEntry() and removeEntry() which were exposed by a recent
      bug fix in swampInfoNodeC::operator !=().
* Memory Trib:
  * Added support for LOCAL_FLUSH_ONLY to rawMemAlloc().
* __kclasses:
  * __kequalizerListC: now uses a waitLock and not a recursiveLock.
  * swampInfoNodeC: Removed all user-defined operators. Obsolete.
* vSwampC: Now uses a RAW slam cache instead of __kequalizerList as its object
  allocator.
* Added a recursion map for the VMM recursions.

At some point in the future, I may even be able to completely remove
__kequalizerListC and replace it with a more optimal class for vaddrspace
management.
Kernel can now spawn multiple processes and properly switch between their
address spaces on thread switch.

* Build system now lists "llvm" as an HLL option.
* Implemented tlbControl::saveContext() and tlbControl::loadContext().
In the middle of making some design changes to process spawning; namely,
processes are now spawned asynchronously.

* taskContextC: Streamlined the way task register context is initialized;
  especially with reference to stack pointer registers.
* Processes/Threads:
  * spawnThread() can now take a flag FIRST_THREAD to tell it how best to
    initialize the new thread if it is the first thread in a new process.
  * Defined syscall getInitializationBlock() and friend
    getInitializationBlockSize().
  * Created new process type kernelProcessC, inherits from containerProcessC.
  * Cleaned up stack allocation of new threads.
* vSwampC: Added NOLOG flag to a certain warning.

* Updated kernel design docs with new info on process design.
Wrote the common entry for all processes, and the skeleton sequence to allow
the kernel to properly decide how to initialize new processes and detect their
executable format so that it can map in the correct confluence libraries.

* x86-32:
  * Separated the top level kernel virtual address space change propagation
    code from the page fault code, at least logically.
* IBM-PC: Fixed a bug in the MP checksum code which was hidden by GCC's
  optimizer.
* VFS:
  * Changed the prototype for the distributary trib currentt's getPath; now
    returns error_t directly.
  * DVFS Inodes no longer automatically get initialized as type IN_KERNEL.
* Processes/Threads:
  * New enumeration for process types, including the KERNEL process.
  * New process type kernelProcessC.
  * New enumeration for process executable formats.
  * Fixed bad logic in getInitializationBlockSizeInfo(): now returns the string
    sizes and not lengths.
  * Fixed a bug in newly spawned processes where their page directory memory
    was not being zeroed upon allocation, and would be filled with garbage
    mappings.
* NOTICE, WARNING, ERROR and FATAL messages now feature new prefix formats.
* Cisternn now exports a proper entry point.
* Distributary inodes now hold an extra argument for the real fullname of an
  storage VFS resource. Used for out-of-kernel distributaries.
* The majority of the process common entry routine has been fleshed out.
* In-kernel distributaries are now fully spawned properly.
Added notes on the kernel event system's structure.
Implemented a class which is the foundation for the kernel's asynchronous
callback framework. This class provides per-thread asynchronous callback
queueing, and specifies a uniform callback message structure for all callbacks
that, for most callbacks, removes the need for a specialized message type.

The class hasn't yet been integrated into the kernel, but when it is, it will
be instrumental to getting per-CPU threads cleanly implemented.

Following this, will move into the storage VFS and then on to UDI possibly.

* Patched up singleWaiterListC to remove lost-wakeup races.
* TaskTrib: Created an overload for block() that eliminates the race condition
  that causes lost wakeups.
* LibACPI & libx86MP: Now they properly re-page-align their page addresses
  before freeing to the kernel Vaddrspace Stream.
Revealed a pretty interesting bug which basically means that I need to do some
work on per-CPU threads earlier than expected. Other than that, kernel is
moving along well. Integrated the new callback system into the kernel proper.
Still need to replace the current Timer Stream infrastructure with the new
framework, but it's viable as tests have shown so far.

I believe that this is also the patch in which I fully introduced asynchonous
process spawning callbacks (working well also).

* New gitignore rules to ensure that new Makefiles aren't ignored.
* Processes and threads now store complete IDs in their structures, and callers
  needing to extract portions of a full thread ID should use the PROCID_*
  macros to do so.
* Created a little utility function enqueueCallback() that will reduce code
  duplication in the kernel for enqueueing callback messages.
* ProcessStreamC::commonEntry now queues callbacks for new process creation
  calls.
Globally renamed taskContextC to registerContextC.
Just committing the structure of the new thread split for the introduction
of per-CPU threads.
CPU Streams (class cpuStreamC) no longer inherits from streamC.
* Moved some Process Tributary functions out of the headers into source files
  as part of debugging recent thread changes.
* Properly assigned the __korientation and __kcpuPowerOn threads __KPROCESSID.
* Defined an invalid process ID constant for x86-(32 and 64).
* Fixed recursiveLockC to use PROCID_INVALID.
* Fixed recursiveLockC to use processId_t for its internal owning thread ID
  instead of uarch_t.