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.
Refactor to reuse boilerplaty reify stuff.

This is refactor to make everything a bit cleaner and more readable for
the Auto algebra generator macros.
Don't require mod for fields in Auto.

This removes the requirement for mod when auto generating a field.
Add Auto-algebra example using Apfloat.