ENH: stats: add a random_state property to distributions

Distributions can either rely on the global `numpy.random` state (in a backwards compatible way), or set the instance-level random_state, or use a specific RandomState object for each rvs(...) call.

closes gh-3975

While gh-3975 mentions thread-safety, I don't think distributions are thread-safe with or without this change. 
(at least the way the `size` parameter is handled between a generic `rvs` and distribution specific `_rvs` methods is suspicious).  

Allowing ``seed=np.random`` is inconsistent with the docstring, which predicts that that will give ``ValueError``.