Move `deploy` code to zpm module

This minimizes the amount of code in the `deploy` command wrapper
function, and moves all of the logic to an API function in the `zpm`
module called `deploy_project`.

TODO: Break up the `deploy_project` into smaller chunks and write tests
for it.
tox: run cov report with py27 and py3 configs

Instead of running a separate coverage report (using only python2.7,
consequently), this change forces command-line coverage reports to be
run with py27 and py3. This is useful because the coverage numbers can
vary from version to version, given the need for try/except for
importing stdlib stuff. This is also helpful in case we need to use
something like `six`, which could introduce python version specific
branches in logic.
Merge pull request #65 from larsbutler/refactor-test-deploy

Move `deploy` code to zpm module
Merge pull request #67 from larsbutler/tox-cov-py27-py3

tox: run cov report with py27 and py3 configs
zpmlib: add ZPMException class

This is useful for generic ZPM exceptions which need to be
differentiated from even more generic exceptions, like RuntimeError.
miniswift: rename _swift_url to _swift_service_url

Due to how this is used on other parts of the code, this help make the
content of this variable explicit. It's not just a "swift url", it is
specifically "the url of the swift service", given to us by the Keystone
service catalog.
miniswift: stop searching once swift srvc is found

When we retrieve the service catalog from Keystone, we do a linear
search through the catalog in order to find the swift service. Once we
find the service, there's no sense in continuing to search through the
rest of the catalog.

This change simply adds a `break` in the loop to accomplish that.
miniswift: raise if no swift service is avail.

In the SwiftClient class, it would seem kind of point to allow the
`auth()` process to look for a swift service, not find it, and then
carry on like everything is okay.

This change asserts that if there is no swift service available, we
raise a `ZPMException` immediately.
test_miniswift: add tests for SwiftClient.auth()

This brings `miniswift` test coverage to about 69%. It's not great, but
it's an improvement.