Split fog public url logic into multiple methods

Refactor [CarrierWave::Fog::File#public_url](lib/carrierwave/storage/fog.rb) into two distinct methods:
one that knows how to build a public url using the asset host
configuration (for CDN porpouses) and another one to build the public
url by fog provider configuration.

This not only leads (IMO) to a cleaner implementation, as also create two
another *public apis*. In my understanding, the Fog::File is an
implementation detail of the CarrierWave itself, but some CarrierWave
plugins (namely [carrierwave_direct] [1]) use this class directly to avoid
duplication.

I'm specialy interested in using this new internal APIs in that case,
when, for example, I want to bypass the CDN configuration and talk
directly to fog provider (in the given scenario, to upload directly to
provider).

[1]: https://github.com/dwilkie/carrierwave_direct