Fixes issue #416.

Checks array dtypes before reducing, and if reducing a boolean array,
coerces to MPI-friendly dtypes accordingly.  Affects `min`, `max`, and
`sum`.
Fixes #436.

`local_from_global()` and `global_from_local()` now take sequences
rather than *args.

Also removed an unused method on `GlobalIndex` and made a related
`GlobalIndex` method internal.
Use assert_array_equal and assert_allclose.
Merge pull request #477 from enthought/bugfix/416

Fixes issue #416
Update pi-montecarlo example to use `sum` again.
Rename: _global_to_local -> _local_from_global.
Merge pull request #478 from enthought/bugfix/436

Fixes #436.
Add missing BlockMap params to init.
Have from_global_dim_dict call __init__.
Have from_axis_dim_dicts call __init__.
Merge pull request #483 from enthought/feature/pi-montecarlo-can-use-sum-again

Update pi-montecarlo example to use `sum` again.
Refactor the alternate constructors not to use new.
WIP: Add from_maps classmethod (constructor).
Have from_dim_data_per_rank call from_maps.
Make __init__ into __new__ and have it call from_maps.
Have from_shape call from_maps.
Add and expand Distribution docstrings.
WIP: Rename __new__ to from_global_dim_data.
Update tests and usages.
Merge pull request #484 from enthought/refactor/client-map-constructors-use-init

Refactor client-side BlockMap constructors to call init