Move rate collation tests into TaxRateRepository's spec
Override == on TaxCategory and Zone

Lotus overrides this to do an ID comparison, and that's fine in most cases. When unit testing, the code stubs things to return objects and those objects have nil IDs. Therefore, we should compare object_ids rather than ids
Spree::TaxRate.adjust now takes rates

The code that calls Spree::TaxRate.adjust (probably a 'service') should be responsible for providing the rates. This change allows us to test Spree::TaxRate without caring about persistence in the database, or where the rates are coming from. Theoretically, anything that complies with the TaxRate API would be accepted in Spree::TaxRate.adjust.