robust covariance, cov_type in fit

integrating robust covariances into the model fit method, see issue #1418 
summary issue for robust covariances is #1158

continuing after PR #1867
now starting with discrete models to build the generic version



two possible problems using a standalone function, e.g.
`get_robustcov_results(res_olsg_._results, cov_type='HC1', use_self=True)`

 - cache already has content that doesn't get overwritten
 - we cannot call the standalone function with the wrapper. We need access and change the underlying Results instance.

`use_self=True` is only intended for use in a results.__init__ when we can make sure we haven't used the cache yet, and internally we only have the results instance and not the wrapper.
these `kwargs` are additional to any optimizer kwargs.
Not enough unit tests to see whether this works for all combinations.
refactor optimization options to `optim_kwargs` (later) see GMM