Simplify enum handling for resolution mode by using strings for the enums instead of ints.
create a function for setting up options shared between rez-env and rez-config.
Fix a bug where rez.cli.output() errors when called without args.  should produce an empty line of output.
rez-egg-install: finish conversion to new argparse cli system
Provide copytree function in rez.rez_util.  This function is avaiable in shutil, but it's provided here for 3 reasons:
- 'ignore' argument was only added in python 2.6. it's super useful and we may need to support 2.5...
- this version was modified to support hard-linking files if possible (lots faster)
- we'll likely want more modifications in the future, like setting permissions
improve rez-egg-install:
- previously, the installed egg and all of its requirements and scripts were installed into a single temp directory.  this lead to confusion over which executable script belonged to which egg and created an easy_install.pth file with multiple packages inside.  this new version processes each package individually, and installs modules and scripts into lib and bin subdirs inside the temp dir so that there is no more ambiguity.
- detects compiled extensions and treats them as variants, since these packages are valid for only a single platform + python version.
- uses 'lib' as the installed module subdirectory instead of the egg name. the previous directory structure was `package/1.0/package-1.0-py2.7.egg/package-1.0-py2.7.egg` and the redundant egg dir prevented pkg_resources.find_distributions() from properly parsing and querying information about the package.  the new structure is `package/1.0/lib/package-1.0-py2.7.egg`