Auto-generate algebras & remove some methods from Field.

This adds 2 things. First, a set of macros that can be used to auto-generate some type class instances based on Scala & Java conventions. Second, it moves some fields out from Field over to IsReal, as they don't really make sense on Field.