Add dual method to BooleanAlgebra.

This let's you easily construct the dual of a boolean algebra (where
operations and identities are swapped). It also adds an apply method to
BooleanAlgebra, which was left out by accident.
Merge pull request #39 from tixxit/topic/bool-alg-dual

Add dual method to BooleanAlgebra.
Cleaned up Complex[T] and added Gaussian[T].

Gaussian[T] represents gaussian integers (complex numbers whose real and
imaginary parts are integers). Gaussian[T] requires an Integral[T], just
like Complex[T] requires a Fractional[T].
Add type class instances for Gaussian[A].

This also cleans up some of the Complex[A] stuff as well. There is
still some work to be done trying to remove boilerplate and also
to harmonize the different specializations.
Added a WELL512a PRNG implementation to Spire.
updates to REAMDE.md
improved comments
added benchmark for pow
added some methods to BooleanAlgebra
version bump to M5 and 2.10.0-RC3
add SafeLong to type classes
more work updating SafeLong
add better toString for SafeLong
Module, (Normed)VectorSpace, and InnerProductSpace.

This adds several new type classes to model modules and vector spaces.
It also moves most rig/ring/field ops out into separate
Additive/Multiplicative traits (eg. AdditiveGroup, MultiplicativeMonoid,
etc.). This let's us generalize +, -, and unary_- over both modules and
rings.
Fix some unsigned bugs pointed out by Rex Kerr.
version bump for M6 + README updates
Correct implicit conversions in Number.

Thanks to ellchow for spotting this one.

Fixes #40
Cleanup vectorspace typeclasses + tuple instances.
Add vector space type classes to README.
fix merge conflicts