Implemented debian style version comparison

Since debian has the most experience with versions, I decided to go with
it.  The implementation is a little versbose, but the test coverage is
pretty good so it can be improved in the future.
Fix hard coding of environment variables

We reference environment variables through variables at module scope so
they can be changed in just one place.  Clean up the last few uses.
Fix test handling of failed commands

Exception that occur when shell commands return non-zero exit codes are
now captured so that we can still echo the output to screen for debugging.
You can also make sure certain commands are failing in the test harness.
Create Package DB for meta data storage/lookup

Replaces the internal dict used by the package repo and tree classes.
Refactor out environment save/restore

I want to use this in different contexts (like building things!).
A set of 3 interdependent test packages

These packages are to help test dependency based installation.

Details on these packages:
 * faketools - pretends to be auto tools
 * libgreet - a C++ library the prints hello world
 * greeter - a C++ program that uses libgreet
Environment jump sets build variables

We now set things like CFLAGS and LDFLAGS so that configure and CMake will
pick up on the libraries we have installed.
Handle package dependencies

The "dependencies" key includes of packages that must be installed before
building, installing, and/or using that package.  The install system makes
sure to install those first.
Multiple version support for test packages

The test package tree generator now supports name\d*.xpd.pyt format xpd
template names.  This way we can generate multiple versions of a package
from the same set of files.  This will be used to test versioning.
Support for installing specific package versions

There are no fuzzy version matches, yet, but you can depend on specific
versions just fine.  You can also install specific versions, the syntax
is:

    xpm install mypackage==1.2.3
Added TODO file

Should keep this versioned controlled, so we don't lose anything.
Renamed project from XPM to Xpgk

xpm.io was taken a few months before I started this project.  Xpkg is not
as good of a name, but the xpkg.io name was available.
Finished rename and fixed README formatting

reStructed text is a little tricky, and I don't like the extra white
space needed for nested lists.
Fix README formatting, drop RST from TODO

Lists are just to large a pain in the ass in reStructedText.  I am
switching Markdown for the TODO because the formatting just works with my
natural style.
Update to README

Nested lists finally render nicely.  Embarrassing how many long I have been fighting with this.  Much easier to use GitHub online editor because it has nice preview mode.
Refactor XPA functionality into class

We want to be able to use this in multiple places efficiently, and we need
to keep carving features out of the super Environment class.
Remove extraneous file.

This file is generated during the build and was accidentally checked in.
Fix configure environment variables

When jumping into an environment the variables that configure uses, like
CLFAGS, were being concatenated together with the path separator, not
spaces.  This changes lets you specify the separator by variable.
build command now install deps

We want to build arbitrary packages, even if they have dependencies, so
lets make that work.
Only install a dep if needed

No real tests for this (yet) but at least we now have the check.  This will
also attempt to catch the case where you try and install conflicting
versions of packages.

Not easy way to test yet, but we could at least check file modification
times.  At minimum there are todo's about the missing tests!