add more to base interfaces

Generally the goal of this makes the base interfaces more usable. The
specific goal is to allow for a generic joining Reducer that could
create a record and then merge() all the values in that reducer group,
but I'm moving up a couple other common methods at the same time.

- make Record inherit from scala.Ordered[R] to expose compare
- add mergeCopy(R): R to Record
- create a MutableRecord mixin that Mutable and Raw records will always
  have, and add merge(R): Unit to it.