Switch to using py.test as the test runner instead of nose

### Why py.test
* Better output with the bare asserts we use throughout the tests
* Function fixtures are pretty nice, especially as a way to start a background server or create an isolated virtualenv
  * Automatic clean up of test resources between tests, can be scoped to per test, per module, or per test run
  * Very little boilerplate, just add a parameter to your test function
* Parametrized tests are great, write one test with parameters and a list of parameters and it will be expanded out as if you wrote multiple test functions for each entry in the parameter list.
* Overall I'm more familar with py.test
* We've talked on and off about switching to it before
* We're not really using anything nose specific besides a smattering of small helper functions
* I have a series of changes I'd love to do to make our test suite more "ergonomic" and these changes will be easier for me to implement (and thus more likely I'll actually do them) in py.test
  * Concurrent testing to speed up test suite
  * Spinning up a local test PyPI in a background thread and running our tests against it
  * Reduction of boilerplate required in tests
  * More as I think of more things to make our test suite awesome...