ENH: ma.asarray() and ma.asanyarray() will pass through input of the correct type.

If x is of type MaskedArray for ma.asarray(x) or any subtype of
MaskedArray for ma.asanyarray(x), these functions will simply return x.
This makes them consistent with their numpy counterparts.

Closes gh-4043.
BUG: Fixed mask_rowcols().

Previous implementation relied on ma.asarray() to always create
a new object.

See gh-4043.
BUG:change formatting of assert_array_almost_equal

assert_array_almost_equal now prints the number of digits that were
being compared in the test instead of always printing 8 (the default
for array_repr). This would lead to uninformattive error messages.

Fixes #2367
TST: Add tests for build_err_msg
ENH: speed-up of triangular matrix functions

* `np.tri` now produces less intermediate arrays. Runs about 40% faster for
  general dtypes, up to 3x faster for boolean arrays.
* `np.tril` now does smarter type conversions (thanks Julian!), and together
  with the improvements in `np.tri` now runs about 30% faster. `np.triu`
  runs almost 2x faster than before, but still runs 20% slower than
  `np.tril`, which is an improvement over the 50% difference before.
* `np.triu_indices` and `np.tril_indices` do not call `np.mask_indices`,
  instead they call `np.where` directly on a boolean array created with
  `np.tri`. They now run roughly 2x faster.
* Removed the constraint for the array to be square in calls to
  `np.triu_indices`, `np.tril_indices`, `np.triu_indices_from` and
  `np.tril_indices_from`.
BUG: fix unaligned access of new indexing

Requires 16 bytes alignment from string and flexible dtypes, as
processing functions might access them on the itemsize which can be
larger than 1 byte (e.g. 8 bytes strings)
16 byte the largest alignment required for all numpy copy loops.
Closes gh-4314
ENH: Add check for ndarray/scalar in build_err_msg

This check is needed now that build_err_msg takes a precision argument,
which is only relevant if the things being compared are ndarrays.
TST: Add exception message formatting tests

assert_approx_equal & assert_almost_equal make internal use of
build_err_msg so a few tests have been added to check that the errors
are formatted correctly.
BUG: Fix non-compatible py3 property
TST: Remove test that makes no sense

It's silly to check scalars when their string representations will vary
so much from system to system.
ENH: export nose.tools.assert_raises_regex via numpy.testing.utils
BUG: fix incorrect minlength handling in np.bincount
TST: Change tests to look at array formatting only

The tests were looking at the formatting of other elements in the string
which is not relevant for the things testsed in this case. By looking
only at the array formatting, we guarantee consistency across systems.
BUG: fix fancy indexing with negated strides

When strides where negated and the subspace had a size of 1, then
finding the output array strides did not work because
DONT_NEGATE_STRIDES was not set on the iterator used to find
the output arrays strides.
DOC: partition doesn't have three algorithms (yet)
Merge pull request #4555 from larsmans/partition-docs

DOC: partition doesn't have three algorithms (yet)
Merge pull request #4509 from jaimefrio/twodim-speedup

ENH: speed-up of triangular matrix functions
ENH: use super optimized count_boolean_trues in indexing subfunction

speeds up e.g. a[..., boolmask]
Merge pull request #4544 from juliantaylor/unaligned-index

BUG: fix unaligned access of new indexing
Merge pull request #4541 from ElDeveloper/issue-2367

BUG:change formatting of assert_array_almost_equal