Escape control characters in JSON output

The JSON spec (http://www.json.org) says that control characters are not allowed in JSON, but Rust currently does not escape them. This PR escapes ASCII control characters in JSON output.
Yeah, that would be. You could try something like:

```rust
    for (i, byte) in bytes.iter().enumerate() {
        let escaped = match *byte {
            b'"' => "\\\"",
            b'\\' => "\\\\",
            b'\x08' => "\\b",
            b'\x0c' => "\\f",
            b'\n' => "\\n",
            b'\r' => "\\r",
            b'\t' => "\\t",
            b'\x00'...b'\x1f' | b'\x7f' => "\\u00",
            _ => { continue; }
        };

        if start < i {
            try!(wr.write(bytes[start..i]));
        }

        try!(wr.write_str(escaped));

        match *byte {
            b'\x00'...b'\x1f' | b'\x7f' => try!(write!(wr, "{:0>2x}", *byte)),
            _ => {}
        }

        start = i + 1;
    }
```

Not perfect, but it at least doesn't force an allocation.