Fix unpack tarball not returning the root folder in some cases

The eglibc tarbal does not actually contain the root folder it just
contains a path containing that folder.  We have updated the unpack tar
function to properly parse the resulting path and handle the case.
Allow the user to specificy the relative build-dir

For certain packages we want to be able to do the build work in directory
separate different from the unpack root.  The 'build-dir' option allows
us to do that.  It's specified relative to the working directory where
the files are unpacked.
eglibc version 2.18-svn23787

There are no official release tar balls of eglibc so we use the yocto
version for now.  That SVN revision is the release revision of 2.18 branch
in the SVN repository.
Use pre-load to force environment ld-linux usage (HACK)

Each ELF binary has the path to its dynamic loader hard coded into the
INTERP section of the binary.  On 64bit linux it's something like:

  /lib64/ld-linux-x86-64.so.2

If we are using are own version of libc, it will come with it's own
version of that file, which will conflict.  So we use LD_PRELOAD to force
our version of that library to be loaded instead.  It works for now
but will probably need todo some kind path-rewriting in the future.
Test to make sure most recent packages are installed

Testing this separately to make it easier to hunt down bugs.
Add build only dependencies

These only get installed when actually building something.  This goes hand
and with with a proper binary package system.
ninja 1.4.0 (fast build system)

Fast build system, modern C++ development is not complete without it.
CMake 2.8.11.2 (cross platform build system)

Another really useful C++ tool.
Factor out environment creation in main

Created a basic factor function to reduce duplication among all the
commands.
Clean up main program arguments

They had gotten a little out of sync with what the commands currently did
and they also did represent.  Some were also not referencing the function
doc.
Update info command to tell us about our environment

This is to make the environment setup less opaque to the end user.  Just
run the command then find all the sources of the data you are using and
where things will be put.
Split out build module

Trying to keep the size of the core module down.
Refactor package sources

The PackageRepo now store XPA objects intead of the paths to the binary
archives.  Since this make the XPA and XPD classes have similar interfaces
we now have an EmptyPackageSource instead of separate ones for the Tree
and Repo.
Make XPKG_TREE and XPKG_REPO to be paths

This allows for the user to have multiple repositories or trees of packages
at once.  It uses a very simple algorithm of looking through the repos in
order until the package version combination if found.  If a general package
query is done, the newest version in any repo is returned.