Add an IpclusterTestCase...

that sets up and tears down clients.
Ditch `more_setUp` and `more_tearDown`.

Make inheritors use super, as is more common.
Remove more* methods from base TestCases.

Make the setUp and tearDown methods classmethods.

Also update tests to match.
Change errmsg to indicate an exact number of engines are needed.

If we could make a context over a subset of engines, we could do that in this test baseclass and only a "> #engines" would be required.
Add a CommNullPasser metaclass to testing.py...

that applies the `comm_null_passes` decorator to every method in a class.

Also, rearrange testing.py a bit and remove the old usages of `@comm_null_passes`.
Remove a couple of unused imports.
Change the error message back.

Some tests still break with the wrong number of engines.
Add a `load_hdf5` function to denselocalarray.py...

that takes a `dim_data` to describe which portions of data to load into a LocalArray.

Also add tests for it.  The unstructured case required filling in a bit of missing code in `base.py`.
Remove some redundancy in test method names.
Apply Mark's fix to clear().
Fix typo in comment.
Tweak a docstring.
Add a parallel `load_hdf5` to the client...

that takes an iterable of dim_data structures, one-per-process.

Also, add tests for it.
Apply Mark's fix to dv.clear.
Factor out a function: compact_indices.

I used this functionality in load_hdf5, and I plan to use it to load .npy files as well.
Spell out a comprehension a bit.
Remove targets argument to internal methods.  Reorder targets according to MPI rank order.
Load a .npy file into LocalArrays in parallel.
Improve a docstring.
Add some Barrier statements to prevent race conditions.