Previously we use `hash_util_encode` to encode channel and topic names
to be URL compatible. This uses the more capable `encode_hash_component`
from the recently added `topic_link_utils.py` module. It also moves the
function to `url_encoding.py`
Similar to the frontend `web/src/topic_link_util.ts`, we
introduce a backend module to avoid generating broken
channe/topic links.
Fixes part of #34608