Change spherical<->cartesian conversions to a representation-based implementation

Moved them to a new module in the process
Merge pull request #3003 from eteq/move-sphercart-to-convenience

Change spherical<->cartesian conversions to a representation-based implementation