Allow host to be passed to canonical_href or canonical_tag

Hi Dennis. I enjoyed your talk at spreeconf, sorry I didn't get a chance to say hi afterwards.

This commit allows specifying the host when calling `canonical_href` or `canonical_tag`. This is useful if the canonical host isn't known at startup, or there are multiple canonical hosts (ex. `example.com` -> `www.example.com`, `example.fr` -> `www.example.fr` or other custom domain logic).

I made this to fix a spree issue. The canonical_rails initializer, [specifically this line](https://github.com/spree/spree/blob/master/frontend/config/initializers/canonical_rails.rb#L5), is run at startup and accesses Spree::Config, which in turn accesses the database (see spree/spree#3833). This will allow us to remove that and change the template to.

    <%= canonical_tag(Spree::Config.site_url) %>

We'll also need this ability as we add some (basic) multitenancy support into spree core. In the future this is likely to be something like:

    <%= canonical_tag(current_store.site_url) %>

Thanks