Begin refactoring deriving code and implement #[deriving(TotalOrd)]

The first commit breaks the 1200-line `deriving.rs` into multiple submodules, one for each derivable trait. I haven't made any effort yet to clean that code up, however.

The second commit introduces `#[deriving(TotalOrd)]`, which creates an implementation based on the successive comparison of all struct/enum fields in their declaration order. A future patch will allow this to be configured in the attribute.