MAINT: use assert_warns instead of a more complicated mechanism
MAINT: copypaste assert_warns from a newer numpy into scipy
MAINT: move a numpy compatibility function into its own file
MAINT: python 3 compatibility boilerplate
TST: implement framework for stats/mstats comparisons.

test_mstats_basic.py work technically with comparison between mstats and stats,
however, still quite some errors during testing. Need to check if these are
bugs in mstats code or in unittest.
TST: implemented comparison test between stats and mstats.

Several differences were found. Tests for these differences have been DISABLED
at the moment, but issues will be raised.
TST: implemented routine that prints a table with routines of stats and mstats.

Table shows available unit tests, for ease of comparison.
BUG: collection of fixes to make mstats more consistent with stats.

BIG: fixed inconsistencies for routines sem() in stats and mstats. Both now
have a ddof parameter. For backward compatability reasons, their default values
however differ! Denominator sqrt(n-1) was replaced by sqrt(n), as this is the
proper approach. However, needs to be checked, if sqrt(n-ddof) would actually
be actually the right way.

BUG: in routine mstats.tvar(): the normalization factor n/(n-1.) was missing.
Unittests for the routine with given limits are still missing.

BUG: modified mstats.linregress(): stats.linregress() and mstats.linregress()
now return the same values. Inconsistencies have been resolved by explicitely
calling stats.linregress() instead of doing separate calculations in mstats.

BUG: modified mstats.skewtest(): stats.skewtest() and mstats.skewtest() did
return different results for the p-value. In fact, the mstats approach seemed
to be wrong. Instead of fixing the problem, I changed mstats.skewtest() in a
way that it just acts as a wrapper for the stats.skewtest() function

BUG: fixed error in the unittesting of routine test_obrientransform(). Note
that results are transformed. This was however kept like it is to be backward
compatible

BUG: major bugfix in mstats.tsem(); returned results were inconsistent with the
corresponding stats.tsem() function. The return value was incorrectly
normalized. Instead of sd/sqrt(n), sd/n was returned. It is also ensured that
variance is calculated with ddof=1.
BUG: stats.describe() and mstats.describe() were inconsistent.

Added new parameter ddof in both routines, so one can specify the degree of
freedom when calling. Changes are backward compatible which results still in
different default values for ddof for both routines
BUG: small bugfix in mstats.trima().

In case that both, upper/lower limit were None, the condition was not handled
properly.  Now the array is directly returned.
PEP8: made test_mstats_basic.py PEP8 compliant
MAINT: removed print_stats_mstats_comparison(); to be stored as gist.
BUG: handle case in mstats.linregress when input has a mask of all False.
TST: add extra tests for support for 2D data in mstats.skewtest.
TST: fix a lot of issues in mstats_basic tests
MAINT: clean up changes to stats/mstats_basic in PR 3084.
BUG: fix bug introduced by PR 3408 in mstats.linspace.

Also clean up mstats_basic tests further for PR 3408 changes.
BUG: fix integer overflow in kurtosistest functions.

Also filter some test warnings.
TST: fix too tight tolerance and Python 3.x error in stats.mstats tests.
TST: run pyflakes before pep8 on TravisCI.

Addresses @pv's comments on gh-3456 and gh-3512.