Don't actually pull this - I'm just submitting the PR to highlight the Flashlight changes

This integrates the new flashlight, without MITM and with the ability to tunnel XMPP and other such protocol over CloudFlare.
I don't think so, because I actually initialize masqueradeHost with a default value in PublicIpAddress.  So, even if lookupSafe() is called before we've gotten an S3 config (which I believe is possible), it will have a masqueradeHost available.  If I were grabbing it from the model, it would be null at this point.

Using the event allows me to override the default value