Generalized Disjunctive Programming: A Framework for Formulation and Alternative Algorithms for MINLP Optimization