PyOED: An Extensible Suite for Data Assimilation and Model-Constrained Optimal Design of Experiments