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