Submodular optimization with constraints and fairness: Algorithmic advances and applications