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.
What I mean is that somevector.dot(somedyadic) should work fine, and the user should never have to use `rdot` explicitly. The method could still be there, but it may be better suited as a "private" method (i.e. `Dyadic._rdot`).