A null-space primal-dual interior-point algorithm for nonlinear optimization with nice convergence properties