Automatically un-import distarray modules at client shutdown.
Adds back `dacluster clear` command.
Add a decorator for protocol validator functions.

Wrapped functions throw an exception rather than returning a success value.
Use the exception thrower in our DAP testing.
Remove an unused import.
Return the validator tuple on success.

Because why not?
Merge branch 'master' into feature/exception-throwing-protocol-validator
Context's now put thier keys in a dict.
Fix rebase conflict.
ClientMDMap -> Distribution
ClientMapBase -> MapBase
ClientNoDistMap -> NoDistMap
ClientBlockMap -> BlockMap
ClientBlockCyclicMap -> BlockCyclicMap
ClientUnstructuredMap -> UnstructuredMap
Move module level functions to top. Refactor them.

There is now a single function for getting a `Map` from a `dist_type`. This
pattern was duplicated a lot and is now consolidated in `choose_map`.

Renamed `dist` -> `dist_type` in some places for consitency.

Renamed `map_factor` -> `map_from_sizes` to be consisten with
`map_from_dim_datas` and `map_from_global_dim_dict`.
Module organization comments.
pep8/pyflakes
Add simple tests for DAP validator wrappers.

Incidentally, add the test file `distarray/tests/test_testing.py`.
Merge pull request #329 from enthought/feature/exception-throwing-protocol-validator

Wrappers for DAP validator functions that throw exceptions