[core] Refactor Spree::InventoryUnit:

* Use symbol for state machine consistency
* Re-enable commeted out test for #finalize_units!
* Use scope shipped in .backordered_for_stock_item
Refactor lambda to -> notation
Refactor Spree::Zone:

* ruby19 hash syntax
* indentation
* scope logic refactor
Change migration to avoid tiggering callback and use private send:

* Skip :after callbacks on StockLocation and StockItem when creating
intitial instances. Regression due to 0ba60a08f934af9d6a7f17f6e9c90a1749547e9b and 630afbb7f2549556fb1bc914e16a2e3802cc8f15
* Use private send to set StockItem.count_on_hand
because :count_on_hand= is now private. Regression due to 9acf57f6baf55993ca0f4f032e9b7ad684712c9b

[Closes #2789]
Fix ambiguous column name in UpdateShipmentStateForCanceledOrders
migration

[Closes #2792]
Add a contribute guideline to extension template.

[Closes #2781]
Refactor Spree::Shipment:

* ruby19 hash syntax
* More DRY
Refactor Spree::Activator
Refactor Spree::Adjustment
Refactor Spree::Alert
Refactor Spree::BillingIntegration
Revert "Fix ambiguous column name in UpdateShipmentStateForCanceledOrders"

This reverts commit 0c04aade284df9eb06adee5fb6fb3b9db5d4f43a.

rake test_app was getting SQLite3::SQLException: near ".": syntax error
Refactor coupon applicator
Revert "Refactor lambda to -> notation"

This reverts commit 6cfd0144f466432f22675be16349d728bf993bb0.

Conflicts:
	core/app/models/spree/shipment.rb
	core/app/models/spree/zone.rb
Refactor Spree::Calculator and Spree::Classification
Refactor Spree::Country
Add missing argument to manifest_unstock method call
Refactor Spree::CreditCard:

* ruby19 hash syntax
* Use state_machine helper for checking payment state
* Remove #first_name? and #last_name? because AR already define these methods
* Rewrite the test
Refactor Spree::Order - using -> notation for lambda
Validate presence of variant on StockItem