fix example/finitefield.scala: add gcd method
rework project structure

* core sources of spire now live in their own subdirectory
* tweaking the build file, update SBT to 0.12.2
* add new artifact: spire-scalacheck-binding which exports the law checking
  mechanisms

Everything should still work out of the box like it used to, except that a new
artifact is being generated.

$ ./sbt compile # compiles core, scalacheck-binding and examples
$ ./sbt test    # tests core and scalacheck-binding
$ ./sbt publish # publishes core and scalacheck-binding as
                # 'spire' and 'spire-scalacheck-binding'
update ScalaTest to 1.9.1 and fix resulting deprecation warnings
Bump version to 0.3.0-RC2.

In light of the awesome reorganization by Lars, as well as the
backporting effort to 2.9 and bugfixes, it seems worth it to
mark a new RC.
Add k-means example using NormedVectorSpaces.

An illustrative example of why abstracting over vector spaces can make
our code more re-usable.
Add comments to k-Means example.
Remove generic Eq from default implicits.

This removes the generic Eq which makes an Eq[A] available for ANY type
A. While the implicit was low priority, it made it easy to make mistakes
like x === 0, where x is some type A. Eq[Any] would be inferred and we'd
use Scala's == rather than what we'd exepct.

The generic eq still lives, but it has been moved to
spire.optional.genericEq, which you must explicitly import to get.
Fix bug in k-means example.
Merge remote-tracking branch 'tixxit/topic/k-means-example' into 2.10.0
Move spire.optional package to mirror 2.9 changes.
Add default implicit for Monoid[Array[A]].

Though there was an ArrayMonoid class, the implicit was missing. This
was just an oversight. The ArrayMonoid is now available implicitly.
First pass at CoordinateSpaces.

This adds a new vector space, CoordinateSpace. What a CoordinateSpace
adds is a "dimensions" field and a way to obtain values of the
components of a vector.
Add example of random forest implementation.
correct docs w.r.t. spire.syntax.radix
Fix bugs in random forest example + yeast dataset.

There were several bugs in the random forest example that were
discovered while testing quality of the random forest on 2 data sets.
This also adds a new data set to cross-validate as an example.
Additionally, the data sets are moved out into their own file.

On top of others, the decision to always split a region with more than
minSplitSize points was made. Before, if there error couldn't be
decreased, then we gave up. However, since axes are sampled, this was a
bad strategy. Especially for datasets like the S. cerevisiae one, where
a couple of axes are 0.0 for a majority of data points.
Reorganize random forest example.

I didn't like the way the code read, so I reorganized it so the
interesting bits were in the right order.
Reorganize inheritance vector space classes.

This reorganizes the inheritance hiearchy of vector spaces. Namely,
InnerProductSpace no longer extends NormedVectorSpace. A
NormedVectorSpace is available implicitly if an NRoot is available for
the scalar.

Modules are no 2-sided by default. There is also a LeftModule now too.

CoordinateSpace also provides a way to access the basis.
Use `Rational` as field type in `Iris` data set.
Better described datasets & RF regression example.

This adds a new dataset for regression, along with an example testing
the regression capabilities of the RF example. We also made the datasets
more descriptive, which let's us automagically parse and load the
dataset, as well as converting categorical variables to binary strings
and the like.
Don't box when use ops with Int on the RHS.

This adds new macros for handling up-conversions from number types
before applying an op. Now, for instance, (a: A) * 2, where we have
`Ring[A]`, won't box.