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: add support for python ABCs

Beginning with version 2.6, python supports abstract base classes,
which contain a class hierarchy for numbers. This class hierarchy is
very similar to the one of numpy, so it is very easy to register
the numpy type hierarchy with the python type hierarchy.

This patch adds those registrations and also adds unit tests for it.
ENH: add numerator and denominator to integers

numbers.Integral types are supposed to have a numerator and
denominator attribute. This adds those two trivial attributes.
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`.
Merge pull request #4547 from tecki/master

add support for python ABCs
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: optimize count_boolean_trues further via unrolling

redoing the computation if the booleans do not not contain 0 or 1 allows
sharing registers for the addition and or operations so we can more
aggressively unroll the loop to save 3 multiplies and shifts. Also it
allows better pipelining of integer operations.
Improvements range from 10%-50% on a range of amd64 cpus.
Merge pull request #4548 from juliantaylor/boolcount-improve

ENH: optimize count_boolean_trues further via unrolling
TST: increase test time to avoid negative times on UTC conversion

fixes the test on windows where mingw _mktemp64 will return an error
instead of a negative time.
Merge pull request #4549 from juliantaylor/datetime-test-fix

TST: increase test time to avoid negative times on UTC conversion
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.