[backend] Use the controller name rather than Object when a model does not exist for authorize_admin method

Fixes #3622
Move preference_resuce.rb into Core, where it should've been

Fixes #3860
Fix issue where cancelling a line item delete didn't actually cancel it

Fixes #3862

Conflicts:
	backend/app/views/spree/admin/orders/_shipment_manifest.html.erb