Remove unused tools

Spring-cleaning on the tools/ directory, since most
of these are not used (if at all) lets just remove them
to clean out the garbage.

Change-Id: I683de39ffbf0cfa56deb9809a1ae77deadb752a2
Remove usage of pbr

Anvil has conflicts with pbr when it's used in setup.py
and its usage in anvil doesn't really seem useful or applicable
given the amount of pain it causes during packaging and later pip
usage (dependencies downloaded and introspected will themselves
fail due to the wrong version of pbr that anvil pulled in).

So instead of using it, just switch back to using a simpler
setup.py file with usage of nosetests for testing (since we
don't need parallel tests for anvils tests) to avoid the
problems that pbr has caused.

Change-Id: I6d3c09a927434abf07fc025638a0860e44b029fa
Spring cleaning

- Remove dryrun mode that is not really useful
  to have as the side-effects that anvil creates
  are not really going to work in dryrun mode,
  and it doesn't seem like anyone uses this mode
  anyway.
- Remove root_mode() as this is not used anymore.
- Update wait_for_url to take optional functors as
  well as have it validate the max_attempts that
  is given (before using it).
- Move json helper function to utils.

Change-Id: Ieb0abb814b4e1839afc75b68b42b6f14f18d02fd
Add a actions state mapping

In order to easily know what actions will affect
other actions add a central states file that has
this information and use it in the actions to be
able to determine the inverse operations removed.

Change-Id: I211c1db53b34ceabb6c2a53bb77199c5efe2b5ef
Allow venv access to system packages

- Adjust the virtualenv creation so that the created venv
  has access to the system (parent) packages so that when
  clients are installed anvil will have access to them to
  do post-start actions.

Fixes bug 1294653

Change-Id: I9409feade0b28b3f06dc872f673f4745e7cb3d38
Merge "Spring cleaning"
Merge "Add a actions state mapping"
Merge "Remove unused tools"
Use a best score matcher

Instead of finding a match by examining upper
bounds and lower bounds of individual specs use
a scoring matcher that scores all combinations of
candidate requirement sets and then finds the best match
among all those potential candidates to select the final
match from.

This has the advantage of finding a requirement set that
will best fit the input requirement set, removing requirements
with higher scores (less compatible) and leaving those
with lower scores (more compatible) as the better matches.

Fixes bug 1288481

Change-Id: Ic95e4d607e04c7d7d4125bc5fbb5ebf205194c0c
Merge "Allow venv access to system packages"
Merge "Use a best score matcher"
Optional requirements are no longer needed

Now that we allow access to system-site-packages we
don't need to install keystoneclient and glanceclient
since these will be installed automatically by the
installation process into the system-site-packages and
then we can access them in the helper code.

Change-Id: Id9c9806a7ce35395985ed6b30cb499a6559cf544