refactoring __mul__
implementing mag, __abs__, angle, angle_between
changing API: operator * now is cross multiplication, not dot