Refactor from Spree 0.30.x to 2.3.0.beta

It’s partly based on updates to support Spree 1.3 by @fonemstr. This commit keeps original migrations so it can be upgraded. It comes with 100% spec coverage.

You just need to move current code to 0.30.x branch or something then add this to your master branch. It should be back-portable all way to Spree 2.2.x so you probably with ease configure branches for each spree version. I already initiated Code Climate for you :)

@andimal seems to be working on a Spree 2.1.5 branch based on my original fork.