Improvements to the vector module: Del and Orienters

1. Introduces the Orienters API for good code structure
2. Del class now returns unevaluated expressions(vectorial or scalar) composed of Derivative instances. The user can call .doit() to evaluate them.
3. adds the following printing implementations for the vector module - pretty, latex
4. scalar\_map method now takes into account the relative location of one coordinate system wrt another.
5. adds the methods 'measure\_numbers()' to Vector
6. Adds helper methods for calculating curl, divergence, gradient. Also adds the scalar\_potential and scalar\_potential\_difference functions present in the physics.vector module
I have hence retained the <code>orient\_new\_axis</code> -type methods. They cater to the needs of a rotation by a single Orienter itself.
The orient_new is more for internal use/ or for users who want to orient using _more_ than one orienters. I will make this amply clear in the docs, that for single-orienter-orientations, it is better to use the specialized methods.