If no arguments are given build everything

* Changed builder to assume 'build all' when no arguments are given.
  This results in a 'build <package> all' assumption when within a
  package subdirectory
Support build configs
Add .gitignore
Build infrastructure change...

* Renamed build-info to build-query.  The build-query tool is now
  responsible for looking up pretty much any and all package
  information, and all of the tools should use it instead of making
  assumptions about paths.

* Redesigned the package structure to support <category>/<package>.
  When a request is made that excludes the <category> then the
  <project_name> is assumed to be the category.

* Currently anything in the buildtools/ category is not cleaned up
  during build-clean.  In the future there will be a NOCLEAN option as a
  category rule that the Buildrules file implicitly inherits.
Cleanup generated Makefile
Support toolchain path

* Properly split out installation based on packages being part of the
  toolchain or not.
Clobber the workdir w/out all the overhead
Properly prep compile environment
Don't query the 'all' psuedo package
Allow Category Buildrules

* A category directory can now contain a .buildrules file which is
  is evaluated before importing the package specific Buildrule.  This
  allows packages to be organized based on common build information,
  such as toolchain data, or the 3 stages of producing the GCC compiler

* Removed the hard-coded assumption of the buildtools category being a
  toolchain and instead moved the data back into the TOOLCHAIN variable
  which I am now setting via the CATEGORY buildrule
Properly enable debugging
Do not exec 'make'

* exec()'ing 'make' results in losing our ability to cleanup temp files.
Split the sync stage into fetch+prep

* At the core of the issue is that multiple packages can depend on the
  same sources.  To that end, the sources themselves need to be
  represented independant of the packages which require them, as well as
  needed to be archived/maintained independant of the packages.  To do
  this we have split the fetch action out separate of the prep action,
  thus fetch actions are only related to the source archives, and the
  prep action is how a package extracts said archive for use by a
  specific package.
Pickup current variables as well as ENV vars
Include package category in artifact path

* Instead of relying on CBUILD and CHOST it is easier to simply archive
  packages within their category inside of the artifact directory.
Correct variable typo
Properly reference the category path
Bugfix: typo in variable name
Bugfix: cleanup packages_fetch

* The fetch target does not depend on any single package, instead it
  depends on all possible sources.
Enhancement: process builds inside TMPDIR

* In order to avoid thrashing a filesystem with transient objects during
  the build process, and thus getting stuck within the I/O scheduler, we
  now perform all builds themselves within BUILDER_TMPDIR.  This way the
  tmpdir path can be mounted as a ramfs, such as tmpfs, and avoid
  thrashing physical storage, particularly journals on a journalled
  filesystem.