Initial experiments with Lotus-backed Adjustment class
Implement ZoneRepository
Add repositories for TaxRate and TaxCategory
update readme

[ci skip]
Add product repository
Move repositories requires to its own file
Add missing ProductRepository
Allow for adapter_class to be specified
Stub promotions, rather than finding them through Spree::Data[:promotions]

In these tests, we don't care *how* promotions are found, or even if they're found at all, just that they're acted upon
Ensure Spree.adapter_class can be set
No need for a persisted Product instance in this spot
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.