add etag header

fixes #170 
I'd use a match statement here:
```rust
match c {
    b'\x21' | b'\x23' ... b'\x7e' | b'\x80' ... b'\xff' => (),
    _ => return false
}
```