Ensure Ring does fromInt and Field fromDouble.

In situations where we want to interop with Int and Double, we were
sometimes (all the time for Field) using ConvertableTo, but should use
the proper typeclass instead, as it better matches the semantics we
want.
remove superfluous build.sbt
rename `Laws` to `AlgebraLaws`

* prettify test cases
* move `LawChecker` into own file
* move `Arbitrary` instances into own file
refactoring the definition of laws, part 1: "The cake is (not) a lie"
refactoring the definition of laws, part 2: "For a Few Laws More"
refactoring the definition of laws, part 3: "Want to have some cake?"

We want to exclude 0 when testing division. This is not as easy as it seems,
since the Multiplicative* classes do not have a member which holds their zero
value. Hence, we have to take care of that specially, by requiring (at least)
an AdditiveMonoid when instantiating the law cake.

This commit splits `AlgebraLaws` into `GroupLaws`, `RingLaws` and `BaseLaws`.
docs
clean up Trig.scala
Merge remote-tracking branch 'larsrh/topic/laws' into 2.10.0
access numerator/denominator as Longs
playing with numbers
fix typo (thanks to Adam Pingel)
ignore project/plugins.sbt
Merge remote-tracking branch 'tixxit/topic/better-conv-interop' into 2.10.0
specialize on Byte/Short too
add a simple prime number generator
improve safety of BigDecimal caches
Move ceil, round, etc. over to IsReal from Field.
Add new macros to autogenerate typeclass instanes.

This adds new by-convention type class generators for many of the
algebra type classes. This let's us quickly create instances for types
that generally follow common conventions.

In Scala, the expected conventions are things like +, -, *, /, % for
numeric ops. A properly implemented == and `.compare` for equality and
ordering. And ++ for collection appends.

There are also some Java generators. In those cases, the expected
convention for math is .add, .subtract, .multiply, .divide, .mod (or
.remainder). For equality/ordering a propertly implemented == and
implementing Comparable (.compareTo) is expected. For collections,
addAll should work as expected (we use the identity/empty collection to
generate new instances so we always defensively copy and use no
structural sharing).
Refactor Auto a bit to make way for some code del.