Sumo package builder - 508

After a few false starts, here's how I propose arranging the rpm build scripts. It's loosely based on @itamarst 's `IStateChange` idea ...which makes the code easier to test and on what I've seen from buildbot configuration.

I'm not sure you'd call them unit tests, but I've tried to make the tests as fast and as self-contained as possible.

I've got as far as installing running `fpm` on a directory containing an installed Flocker and its dependencies, but there's still a lot of work to be done and the branch is already getting rather large (mostly due to tests). 

So I need help about:
 * how to break this up further
 * whether `fpm` is the right tool 
 * Is fpm going to allow me to create the split client / node / common RPMs that we currently produce
 * could speed things up by re-using the existing spec file and the RPM build code from https://github.com/ClusterHQ/build.clusterhq.com/blob/master/flocker_bb/builders/flocker.py

I've spent 1.5d on this so far already.

Fixes #508
`fpm` (or something) does seem to add extra requirements to our packages.

```
(508)(ubuntu-sumo-package-864 ? =)[~/.../HybridLogic/flocker]$ rpm --query --requires --package clusterhq-flocker-node-0.3.0-0.dev.1.303.ga5636c3.dirty.noarch.rpm 
docker-io >= 1.2
/usr/sbin/iptables
zfs >= 0.6.3
openssh-clients
clusterhq-python-flocker = 0.3.0-0.dev.1.303.ga5636c3.dirty
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
```

I'm not sure what those last two are. Here's a discussion, https://www.redhat.com/archives/rpm-list/2000-October/msg00185.html