Negative Dependence as a toolbox for machine learning : review and new developments