Extend #[deriving(...)] helpers to expose field attributes

This pull request adds field attribute support to the `syntax::ext::deriving` library. This allows `#[deriving(...)]` handlers to work with attributes. For example, this could enable the `#[deriving(Encodable, Decodable)]` to customize how a field name is serialized, which is useful if implementing a schema that uses a field name that is a rust keyword.

This also includes some minor cleanup of a couple bits of `libsyntax`. 
What's the lifetime for? It doesn't appear to be used anywhere except to name this one argument, which seems like it should be perfectly usable as an anonymous lifetime.