API for inventory_units (show & update), fire state transitions, generic
422 exceptions
Tracking IP addresses for order

Fixes #2216

Fixes #2257
Fix incorrect shipment calculation

This issue exists for orders that split up their shipments over two or more shipments.

What happens is that when a shipment is created for a single line item,
the price of that shipment is x. The second time a shipment is created,
for a different line item for the same order, that second shipment's price
 is also x, but the first shipment's price is set to
<shipping cost>*<line items count>, due to the automatic adjustment
updating for an order.

To fix this, we lock the adjustment for any 'calculated adjustment', so
that it may not change once it has been calculated. An admin *may*
choose to override the amount in the interface after the fact.

Fixes #1606
Add missing equal sign for admin_shipping_method_form_availability_fields

Fixes #2310
Stub last_ip_address setting within orders_controller_spec

This is because of the IP tracking changes now, which we don't care about in this test
Protocol specific URL for google font.

This fixes an insecure content from a secure context issue when the
admin interface is loaded through HTTPS.

The protocol specific URL will request this element thorough HTTPS
if the current page is being served over HTTPS.

Fixes #2316
Allow first order for user promotion to work with guest users as well

Fixes #2306
Always show resend button when viewing an order

Even for guest orders

Fixes #2318
[dash] Make sure site_id is being synced with Jirafe
Make sure that shipment for resumed order can be set to ready

Fixes #2317
Fix issue where PerItem calculator would fail on promotions that had rules which did not respond to the "products" method

Fixes #2322
[promo] Fix product rule

There's a couple of things to note in this commit.

The first is that I've removed tokeninput.js. We *were* using it for autocomplete, but we're now using select2 for that.

There's now a product searching 'API endpoint' in Core. This is a 'necessary evil' for the product searching to work, but will be removed when the changes from #2225 are merged.
The select2 helpers within capybara_ext have been massaged a bit to correctly scope calls to their relevant elements, using Capybara's API more rather than depending on ugly JavaScript and sleep statements, and gotten closer to what I'd call sane code.

In promo, the user picker code has been moved out into a new file at user_picker.js, and the product picker lives at product_picker.js. This is because dumping all your code in one file is what we did back in PHP-land, *not* what we're going to do in Spree.

The user picker JS code is now also run when we create a new promotion rule for a user. This means that you won't need to refresh the page to see the field any more. Consider it a freebie.

Finally, we're no longer testing the promotion rule for products using just model calls. We're actually stepping through the flow, as a user would, which is much better.

Conflicts:

	core/lib/spree/core/testing_support/capybara_ext.rb
[dash] Make sure a Jirafe exception can't trigger a redirect loop
Version bump
Check if Spree::Dash is configured before trying to sync with Jirafe
Correct call to Spree::Dash::Config.configured? within Admin::OverviewController
[dash] Redirect to admin path if JirafeException is thrown
Revert "[dash] Redirect to admin path if JirafeException is thrown"

This reverts commit 9657d3d38e1f13cb338b9cd848f71e594929e6d4.
[dash] Use dummy url if Spree::Confnig.site_url is 'localhost'

This is because Jirafe will reject requests for sites claiming to be from 'localhost'
Fix select2 helper usage