Rework the trait exports.

`use vec::an_operation` will import a vector-applicable operation trait.
`use mat::an_operation` will import a matrix-applicable operation trait.
Make the `traits` module private.

Use `vec::Whatever` or `mat::Whatever` instead of `traits::whatever::Whatever`.
Move the `Outer` product trait to vec.rs