Add circle CI setup

fixes #5506
Implement a state lock version to prevent race conditions in checkout controller. refs #4190

Fix broken specs.

Add regression test for state lock version. Fixes #4190
Not every payment method has to handle cancel

according to these two issues
https://github.com/spree/spree/issues/5307
https://github.com/netguru/spree_payu_integration/issues/5
I believe we has to check if cancel method is available before call it.
raise error if payment_method sub-class doesn't override cancel

fixes #5495
remove extra dependent destroy from variants
fixes #5511