Fix Jet class cast exception
Avoid synthesizing VectorSpaces from ClassTags unless necessary.

The code in Jet was importing all the array implicits. This meant
that an implicit ClassTag[A] gave you a VectorSpace[Array[T], T].
There were a couple of issues with this:

 1. Every simple operation on a Jet created these instances.
 2. Actual VectorSpace[Array[T], T] instances became ambiguous
 3. It wasn't clear why certain type classes were used (or not).

This commit stops importing the array instances, and fixes all the
methods that broke. Overall, this should be a more maintainable
strategy: we will require the instances we need, and ask for them
explicitly.

It's possible that a user of Jet will write code that synthesizes
many VectorSpace instances, but at consistently generic code should
not have to do so.
Fix similar synthesization issue with Eq[Array[T]].

This commit avoids synthesizing a type class instance every
time we want to check for equality.
Merge pull request #333 from non/jetcast

Fix Jet casting problems, and other fixes.