The Best of Many Worlds: Dual Mirror Descent for Online Allocation Problems