Segment testing classes more finely
More thoroughly test project_{connect,detach}_headnode
More thoroughly test project_{connect,detach}_network
More thoroughly test project_{create,delete}
More thoroughly test node_{register,delete}
More thoroughly test node_{connect,detach}_network

At least one thing is not yet checked in the functions, nor tested for:
checking that the projects match.
More thoroughly test headnode_{connect,detach}_network

As for node_{connect,detach}_network, projects are not checked.
More thoroughly test port_{register,delete}
More thoroughly test port_{connect,detach}_nic
Added some `@no_dry_run` tests.

This involved a bit of refactoring - I am of the opinion we should be
doing more of this in our test suite; its easier to look at code like
this and have a clear idea of what it's testing, particularly when we
have a lot of tests.

I ended up taking things out of the class, mostly because python's
scoping rules are such that the test cases themselves would have had to
have been (e.g.):

    def test_dry_run(self):
        TestNoDryRun._dry(TestNoDryRun._function)

...which hurts my eyes. In any case, for right now there aren't any
other test classes in the file.
Started abstracting common model tests.
Converted the rest of the model test over to ModelTest.

Code coverage is the same as before, code is less redundant.
ModelTest now uses the abstract base class module (abc).
Reduced some of the sample_obj implementations to fewer statements.

Mostly by folding things into one expression; @gsilvis and myself both
agree that this is more readable.
Merge branch 'devel' into test_failure_cases

Conflicts:
	tests/unit/api.py

Currently, a large number of tests fail.
Remove tests for removed API calls
Fix tests

- All tests now pass.

- Two tests were removed:
  test_headnode_{connect,detach}_network_wrong_headnode.  This is because it
  isn't even possible to make two headnodes on the same project anymore (which
  is what those tests did.)

- A new style of explaining tests, in TestHeadnodeConnectDetachNetwork:
  comments illustrate how each test differs from the succesful test.  I think
  this makes it a little easier to tell what went in to creating the tests,
  though it doesn't solve the problems with the testsuite in general.
Merge pull request #155 from gsilvis/test_failure_cases

Test failure cases
Establish new driver API

The API is documented in haas/drivers/__init__.py .  There are two drivers
now: the dell driver and the null driver (which, as its name suggests, does
nothing.)

All unit tests are explicitly run against the null driver.  So, any
functionality, such as vlan allocation, that is specific to a drier, such as
the Dell driver, must get its own test suite.

There is one regression here: the Dell driver now has hard-coded which VLANs
it can use.  We should add a configuration option for that.

There is one HUGE piece of trickiness in the code: the init_db function calls
the driver's init_db---but table creation is done by the fact that we import
the module BEFORE doing table creation.  This is tricky, and confusing, and
terrible, and we should fix it.
Remove driver-specific 'vlan_{register,delete} API call