Dyadic code for vector module

Has been based off #7566 
Adds code for dyadics, with tests.
Also restructures the Dyadic and Vector code into a nice Object-Oriented structure with the introduction of a common super class.
Now that I think of it, this code is more about an operation on _Vectors_ wrt _Dyadics_, rather than the other way round. I think this code should go into vector.py, in the relevant methods. What do you think?