Allow specifying what name to use for a field when using Encodable/Decodable.

Sometimes you want to decode/encode a JSON object which has keys that are not valid rust identifiers and so you can't use `Encodable/Decodable`. This pull adds an attribute (`#[encoded_name]`) which lets you specify a string to use as the key to use for a given field.

```Rust
extern crate serialize;
use serialize::json;

#[deriving(Encodable, Decodable)]
struct Data {
    metric: String,
    #[encoded_name = "metric-value"]
    value: int
}

fn main() {
    let input = r#"{"metric":"foo","metric-value":44}"#;

    // Decode the input JSON
    let data: Data = json::decode(input).unwrap();

    // Modify the input
    let data = Data {
        value: 32,
        ..data
    };

    // Encode it as JSON again
    let out: String = json::encode(&data);

    println!("data: {}", out);
    // data: {"metric":"foo","metric-value":32}
}
```

Note: this isn't JSON specific, anything that uses `Encodable` or `Decodable` will also be able to take advantage of this.