A Nonsingular Dual-Primal Algorithm for Fuel-Optimal Impulsive Rendezvous