Key Headers HashMap with String instead of &'static str

This fixes an unsafe transmute that could cause use-after-frees
on collision resolution in the headers hash. The new scheme allocates
Strings on insertion, but prevents most allocations on lookup by using
the `equiv` methods for querying by &str.

Fixes #12