Convex Optimization via Domain-Driven Barriers and Primal-Dual Interior-Point Methods