HexToASCII: Improve implementation and comments.

- Do not even process characters which we aren't going to include.
- Move guard against non-ASCII inside the printable_chr function.
- Add a test to show that it doesn't handle queries which contain
  non-ASCII characters.
- Add comments to clarify intent.

This is less clever than the previous version, which implies the
answer to my question from a previous commit.

Turns out that adding comments will actually make me do a slightly
better implementation!  Who knew?!