Get shortest-path examples working.

This example needs a lot of clean up. Using an almost purely type class
approach is causing me to hit some annoying scoping/organization
issues. I'm really tempted to just define everything in a single object
and use local scope to solve all the issues.

I'm using Scala's Stream to get the equivalent of Haskell's lazy lists.
There could potentially be memoization concerns, but for now I don't
have a better idea (other than implementing a custom stream/list).
Hopefully cleaned-up the code organization a bit.
Get evalExpr plugged-in and working.
Added examples for solving linear equations.

This reintroduces StarRig[A], as well as some other machinery.
At this point I think the example is pretty much complete. It could
probably still use more documentation, which I'll try to add after
stepping away from this for a bit.
fix use of == in EuclideanRing[A]
Add constructors for Additive and Multiplicative instances.

Currently, you can go from additive/multiplicative instances to generic
instances using the eponymous methods. For instance:

    def abc[A: Ring]: Monoid[A] = Ring[A].additive
    def xyz[A: Ring]: Monoid[A] = Ring[A].multiplicative

There was no easy way to go the other direction however. This commit
adds Additive and Multiplicative companion objects:

    def cba[A: Semigroup] = AdditiveSemigroup(Semigroup[A])
    def zyx[A: Semigroup] = MultiplicativeSemigroup(Semigroup[A])
Some efforts to make numeric conversions more transparent.

These conversions are mainly between BigInt <=> SafeLong (which should
not be risky) and from Natural => BigInt (which should also not be
risky). Unfortunately there's only so much we can do without a better
mechanism like multimethods.
don't lose sleep over @tailrec in cfor macro
Remove spurious commented-out code.
add macros for UByte - ULong
updated to ignore .history
Make vector space scalar type class available.

If a Module[V, R] is available, then it makes sense to also allow the
scalar's Ring[R] available implicitly.
Add Eq/Order instances for SeqLike.
ignore Vim files
law checking for algebraic structures
Merge remote-tracking branch 'upstream/2.10.0' into topic/extra-instances
add /% and standardize quotient ops
add Number#toString overrides
add usage note comment
quotient cleanup, toString, etc