safehasattr: pass attribute name as string instead of bytes
This is a step toward replacing `util.safehasattr` usage with plain `hasattr`.
The builtin function behave poorly in Python2 but this was fixed in Python3.
These change are done one by one as they tend to have a small odd to trigger
puzzling breackage.
/assign_reviewer @mercurial.review
<!--
Welcome to the Mercurial Merge Request creation process:
* Set a simple title for your MR,
* All important information should be contained in your changesets' content or description,
* You can add some workflow-relevant information here (eg: when this depends on another MR),
* If your changes are not ready for review yet, click `Start the title with Draft:` under the title.
More details here:
* https://www.mercurial-scm.org/wiki/ContributingChanges
* https://www.mercurial-scm.org/wiki/Heptapod
-->