[MRG+1] don't set trailing "_" attrs in __init__

As I said over at gh-3627, 

> we need to fix all the `__init__`s that set final-underscore attributes. Some of them set those to None or similar values. [...] we should do a systematic search of the codebase and introduce a smoke test.

I did just that.

Note: code uses `getattr(self, "someattr_", None) is None` instead of `hasattr`, in an attempt to be backwards compatible with pickled estimators that have these attributes. I'm not sure how important that is (who would pickle before fit?) and unpickling is not tested.
I think we should extend the comment to say that is better to add any new attribute with a trailing `_` in the constructors but existing estimators that have this behavior are tolerated for backward compat.