vagrant - initial commit of vagrant config for VMs to build RPMs

Want a dedicated build VM to keep the build process reproducible.
initial commit - code, installation, and test infrastructure
vagrant/rpm build - RPM builds on Fedora 19 VM are working

The builds should also work on the Fedora 17, 18, and 20 VMs that are
already built and hosted. Currently however the RPMs build do not
include a useful e.g. "fc19" suffix; hopefully I'll fix this in a
future commit.

Current state of play is that after installing the built RPM you can
run "vocalsalad" on a machine and it launches the Tornado Hello World
example bound to all interfaces port 20080.

Thie RPM is a dumb collection of a virtualenv that gets deployed to
/opt/vocalsalad, and then a softlink to the setup.py-generated
/opt/vocalsalad/bin/vocalsalad console script is created from
/usr/local/bin/vocalsalad. Using a virtualenv isolates us from
different versions of modules already installed but at the same time
we still require a working version of Python installed on the system.
systemd/rpm - provision systemd service, do proper upgrade

Provision a systemd service that starts the vocalsalad consolescript,
the main function in server.py. Moreover get the RPM to detect if it
is currently in an install/uninstall or an upgrade situation.
Upgrading.

-	If we're just installing from scratch copy the files, create the
	service, and start it.
- 	If we're just uninstalling from scratch delete the files,
	stop/disable the service.
-	If we're upgrading then we need to stop the service, copy the
	files, then restart the service. Very naughty if we just left the
	service running and copied/deleted files under its feet! And
	even worse if we forgot to restart the service.
-	If we're upgrading then the post-install step must not delete
	any files (!!).

Note that when installing RPMs reading [1] is a good tutorial on the
steps taking during upgrades/installs.

[1] https://www.ibm.com/developerworks/library/l-rpm2/
systemd - stop service before starting an upgrade

If this is an upgrade it's important not to delete/change files under
the feet of a running web application. We stop the service before
copying around files.
Makefile - fix RPM name to include distro name and version

We're going to use Vagrant VMs to build RPMs for a given distro and
version. It's important to have the OS name and number in the filename
of the RPM, and for some reason fpm can't do this for me.
app - add test and code for the '/ping' route

This route just returns 'pong/n'. This commit also includes the
test infrastructure for starting the server in a different process on
any available free port and using requests to make an HTTP request to
the new temporary instance of our web server.
app - refactor, break out Tornado handlers into their own module

This makes it easier to refer to the root app.py file to see what
routes apply for the entire application.
tox - add flake8 as dependency and to test cycle

flake8 is a good combination of pep8 (style guide) and PyFlakes
(static code analyzer, e.g. conditional complxity, unused variables,
etc.) I use it in my editor, so may as well add it to the test cycle
too.
flake8 - change settings to print more verbose errors, check complexity

Checking complexity is experimental, going to see if combining it with
TDD actually helps keep maintainability high or if it's just a
nuisance.
handlers/run - add tiny test to check a run endpoint exists

We're just POST'ing to '/api/v1/run' and checking the server doesn't
throw an error. Not even testing the return, checking if it worked,
etc.
setup.py - fix lint error

Block comment was missing a space.