feat(header_dict): set and erase headers

1. set a non-existing header is equivalent to adding one
2. set an existing header name replaces all headers with that name
3. erase removes all headers with that name and returns the count