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.
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
Fix tests so that they pass
s/flan/vlan in haas/driver/dell.py
Document purpose of 'apply_networking'
Fully remove vlan_{register,delete} API call
Add test for init_db in dell.py
Add config option to dell switch to list available vlans

Syntax example:  10, 100-109, 4000-4001,2000, 9000-10005
Fix and test Dell vlan allocation/freeing
Merge branch 'abstract-model-tests' into ns-nic

Conflicts:
	tests/unit/model.py
Fix bug where tests fought eachother

Specifically, they would all modify the same global state (the config object).
Now each test clears the config, sets it to what it needs, and clears it
again.  There are decorators to do this.
Added some (failing) tests

We want to be able to have (h)nics with the same name, provided they
don't belong to the same (head)node.
(H)nics are now namespaced by their (head)nodes.

This resolves #156. There are a few things I'm not totally satisfied
with though:

* There's a bit of redundancy in the changes made to the two api
  functions; it's probably abstractable, but I'm not sure it's really
  worth it, given that it appears exactly twice.
* I took a bit of a hacksaw approach to the database schema change; I
  just removed the unique constraint on labels. All of the api calls are
  checking for the existence of duplicates anyhow (We'd see
  IntegretyErrors otherwise, rather than DuplicateErrors), so this is
  still "correct" -- but long-term I'd like to clean this up (there's
  lots of bits of our schema that need that though).
Deduplicate config-clearing decorator code
Expanded the docstring for ``ModelTest``.

As Peter pointed out, it's doing some not immediately obvious things to
work with pytest, so let's document them explicitly.