refactor: header_value_for_each now returns std::move(f)

This change mirrors the C++ design (e.g. std::for_each) and can be used,
for instance, to accumulate values.