Split fog public url logic into multiple methods

Refactor CarrierWave::Fog::File#public_url 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