Add Distribution.reduce(axis) method.

Returns a new Distribution with specified axis removed.
Reorder operations in Distribution.reduce()
Fix distribution, and ensure reduced distributions are consistent.
Initial working version of sum() with axis support.
Fixes regression with invalid MPI comm.
Fix axis argument to distribution.reduce()
Merge branch 'master' into feature/subset-ranks

Conflicts:
	distarray/dist/distarray.py
Basic reduction support.

Only sum() and mean() implemented right now.  Only supports reducing
one axis at a time.
Merge branch 'master' into feature/basic-reductions

Conflicts:
	distarray/dist/distarray.py
__import__ -> importlib.import_module
Support zero-dimensional distributed reductions.
Support zero-dimensional distributed mean reductions.
Fix another reduce() call.
Support several axes in distributed reductions.
Support axis=None argument for sum() and mean()
Support negative axis indexing for sum() and mean().
remove unused import.
Refactoring and cleanup.
Merge pull request #382 from cowlicks/no-dunder-import

__import__ -> importlib.import_module
Merge branch 'master' into feature/basic-reductions