A Comprehensive Introduction to Sub-Riemannian Geometry