Various enhancements

Servo's Rust is too old to build this code, but I want these changes for html5ever.

We can update Servo's submodule after the next Rust upgrade (which is already needed to land html5ever).
Would it make sense to leave the Str implementation until the rust team make the change in stdlib so that Str does not imply Equiv?