Asynchronous automated deployment and test execution via salt.

Workloads are still synchronous in the sense that one workload
must finish before another workload can start.

Workloads are asynchronous in the sense that instances are
asynchronously within the boundaries of a single workload to
reduce deployment time.

Asynchronous salt calls are achieved with three main components:
EventStore - Stores event information pulled off the salt master
	event queue.
JobPoller - Background process that continually polls the master
	event queue and places information in the event store.
MultiJob - Continually publishes salt requests until MultiJob.wait
	is called. Wait looks into the event store pulling
	until it has all the information for all published jobs or
	a timeout is reached. Wait also handles SaltCommands that
	are a sequence of salt commands. When a command in a
	sequence is identified as finished, the next command in
	the sequence is published.

Not implemented yet:
publish checking - Making sure a publish to salt is successful
job return checking - Making sure all minions in a job have a result
	and all results are 'passing'
consistent timeouts
Merge branch 'initial' of github.com:absalon-james/cloud-workloads into initial