catch_warnings blocks more robust

Explicitely calling clean_warning_registry before with block.
Fix for #3494 
regarding `Ward().fit`: That's what I had, but when I `ran test_linkage_misc()` it failed saying:
AssertionError: No warning raised when calling fit

This was the code:

     warning_list = assert_warns(DeprecationWarning, Ward().fit, X)
     assert_equal(len(warning_list), 1)