syntax: match variants use 4 space indent by default
syntax: update a deriving error message to use the new syntax
std: clean up the order of {De,En}codable methods
std: rename {read,emit}_field to {read,emit}_struct_field
syntax: Simplify deriving to handle classes that take generics, like Encodable
syntax: add support for #[deriving(Encodable)]
syntax: add support for #[deriving(Decodable)]
std: add serialize {read,emit}_tuple{,_arg,_struct,_struct_arg}
syntax: add {read,emit}_enum_struct_variant{,_field}
test: update serialization tests to use new macro
auto merge of #5819 : erickt/rust/incoming, r=erickt

Good morning,

This first patch series adds support for `#[deriving(Decodable, Encodable)]`, but does not yet remove `#[auto_encode]` and `#[auto_decode]`. I need a snapshot to remove the old code. Along the way it also extends support for tuple structs and struct enum variants.

Also, it includes a minor fix to the pretty printer. We decided a while ago to use 4 spaces to indent a match arm instead of 2. This updates the pretty printer to reflect that.