Updates CPPWS rates and shipment methods to accept location objects

Another one to make the canada_post_pws carrier interface more consistent with the others by allowing location objects to be passed to rate and shipment methods as well as location hashes (hashes used to be all that it allowed for some reason).

Resolves https://github.com/Shopify/active_shipping/issues/105

@csaunders @jeromecornet please review again, thanks!