VectorSpace Redux

This PR makes some drastic changes to how we work with vectorspaces. The design is driven by 2 parts:

 * removal of the scalar member from `VectorSpace`,
 * addition of new `IndexedBasis` type class (along with `Basis` and `Frame`).

The removal of scalar let's us get rid of things like `Module`. Certain properties of `VectorSpaces` now rely on compatible scalar type classes like `Field`. The addition of `Basis` replaces the clumsy `CoordinateSpace` and provides primitives for working with vector-like things (mapping, zipping, etc.).

The PR as it stands now can't really be merged yet. We need to get examples working and I need to review the code to remember where I left off.