Major kernel build infrastructure changes, part 1/2 (sys).
These changes are primarily designed to create a 2-layer machine and cpu
build hierarchy in order to support virtual kernel builds in the near term
and future porting efforts in the long term.
* Split arch/ into a set of platform architectures under machine/ and a
set of cpu architectures under cpu/. All platform and cpu header files
will be accessible via <machine/*.h>. Platform header files may override
cpu header files (the platform header file then typically #include's the
cpu header file).
* Any cpu header files that are not overridden will be copied directly
into /usr/include/machine/, allowing the platform to omit those header
files (not have to create degenerate forwarding header files).
* All source files access platform and cpu architecture files via the
<machine/*.h> path. The <cpu/*.h> path should only be used by
platform header files when including the lower level cpu header files.
* Require both the 'machine' and the 'machine_arch' directives in the
kernel config file.
* When building modules in the presence of a kernel config, use the IF
files, use*.h files, and opt*.h files provided by the kernel config
and do not generate them in each module's object directory. This
streamlines the module build considerably.