Cleanup Makefile and test suites in preparation for new CD pipeline

As part of the preparation for updater, this PR cleans up the `Makefile` and prepares our test suites for a new CI/CD pipeline.

### Makefile changes

 * Fix `dev-registry` target to handle stopped registries
 * Fix error handling bug with `foreach` loops in the root `Makefile`
 * Add new `dev-release` target which cuts a release from the current source tree
 * Add new `deploy` target that calls `build dev-release restart` for easy hacking
 * Rename `DEIS_REGISTRY` to `DEV_REGISTRY` for clarity
 * Add `make build` target to client so we can use `client/dist/deis` binary in the test suites
 * Build clients (deis & deisctl) as part of `make build`

### Test suite changes

 * Factored out common test setup logic into `tests/bin/test-setup.sh`
 * Refactored existing tests like `test-integration.sh` to use common setup logic
 * Modified `test-nightly.sh` to test with public artifacts (not the local source tree)
 * Added `cleanup` and `dump_logs` callbacks to all tests
 * Switched tests from 1-node to 3-node Vagrant
 * Added prints and timing information throughout suites to provide better log feedback
 * Fix `make discovery-url` to be portable, per http://unix.stackexchange.com/questions/92895/how-to-achieve-portability-with-sed-i-in-place-editing -- fixes #1916 

This PR also includes a work-in-progress `test-acceptance.sh` script designed to test the updater. 

## Test Suites

This PR introduces 4 different test suites:

1. `tests/bin/test-smoke.sh` used to perform fast(ish) smoke tests on the current source tree
2. `tests/bin/test-integration.sh` used for end-to-end integration test on the current source tree
3. `tests/bin/test-nightly.sh` used for end-to-end integration test using published images/clients
4. `tests/bin/test-acceptance.sh` used for testing the update engine in preparation for CD promotion

## Testing Instructions

1. Checkout this branch
2. Blow away all your Vagrant VMs
3. Make sure you have a local Postgres running (TODO: move to a container)
4. Run one or all of the above tests (except `test-acceptance` which isn't ready)