Improve Requirement messaging

Specify a cask and binary download for `osxfuse` and `tuntap` and use the formula name in the requirement message.

CC @jacknagel for review to make sure this approach doesn't make you :sob:

Fixes #34868.
I don't think this is correct. It should be `dependent.name` or it will be wrong for requirements that belong to dependencies, and we already print that on the line below.

Additionally, I don't want requirement objects to be mutable. It means we can't safely cache and share them anymore.