Use Uri.of_string for HTTPS validation instead of string prefix check
The previous is_https used a raw prefix check that accepted malformed
URLs like "https://\x00evil.com". Now uses Uri.of_string + Uri.scheme
matching, consistent with redirect_uri validation. Also rejects URLs
with no host component.