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`. 
I think these lifetimes are unnecessary as well (even the type parameter).