Add all_warnings context manager

The context manager searches for __warningregistry__ entries that
Python leaves all over the place, clearing them, thereby ensuring
that warnings will always be raised.  This is necessary for the test
suite to detect warnings even if they were raised before under
the "once" filter.
Update shape tests to use all_warnings
In all_warnings context manager, return warnings for examination
Move all_warnings to skimage._shared.utils