Optimality in Nonlinear Programming: A Feasible Directions Approach.