Fixes bugs and testsuite when running on n > 4 engines.
Fixes testsuite to run on fewer than 4 engines.
Add a ContextTestCase.

When inherited from, it handles creating a Context with `ntargets` targets (default 4) and closing the context after the test.  It will also raise SkipTest if a Context of that size can't be created.
Use ContextTestCase in test_context.
Use ContextTestCase in test_distarray.
Use ContextTestCase in test_distributed_io.
Use ContextTestCase in test_functions.
Fix ContextTestCase to raise more skips.
Use ContextTestCase in test_maps.
Fix test_distributed_io.

... call super in setUp where appropriate.
Remove a leftover targets len check.
Remove an unused import.
Use ContextTestCase in test_random.
Refactor TestContextCreation.

Pull out a setUpClass and tearDownClass that manage the client.
We want the rest of setUpClass to be skipped...

on the inheritor.
Fill out test class docstring.
Actually, raising SkipTest in setUpClass works.

So remove the `setUp` I had put in earlier.
Use ContextTestCase in test_decorators...

and fix the tests to work down to ntargets=1.
Merge branch 'master' into bugfix/389_bobs-version

Conflicts:
	distarray/dist/tests/test_distributed_io.py
Expand docstrings.