Fix users rule promo association

Also add an association_foreign_key config because it assumed that every
Spree.user_class would return User which might not be always the case.

[Fixes #3145] [Fixes #3149]
create stock_item if needed during stock_transfers

Conflicts:
	core/app/models/spree/stock_location.rb
Load promotion rules after app initialization

So that they can make proper use of `Spree.user_class` which is only
defined on the app spree.rb initializer

[Fixes #3152]
Specify class name for calculator association in calculated_adjustment

Otherwise, top-level classes that include this module will have an association that looks for ::Calculator, rather than Spree::Calculator