Add HTTP

It's really slow for some reason. Not sure why.
I think the correct way to do this is to use the number of bytes read (returned by read), like this:
```rust
    let mut buf=[0u8,..8 * 1024];
    match socket.read(buf) {
        Ok(num_bytes) => Ok(buf.slice_to(num_bytes).to_owned()),
        Err(e) => return Err(e)
    }
```

When reading from sockets I remember from other languages that the rule of thumb was to use a buffer between 4K and 16K (usually 8K like I did above) to avoid returning too much empty data at the last call, but I'm not sure if the same applies to Rust