Fix specs that were broken by f1658936aa021a9cded44d4df59eab0c884ac06e in 2-2-stable

Fix bad conflict resolution.

Conflicts:
	frontend/spec/features/caching/products_spec.rb
fix font-awesome icons for admin taxons tree

Closes #4717

Conflicts:
	backend/app/assets/stylesheets/spree/backend/plugins/_jstree.scss
Dont mess unrelated records on CreateItemAdjustments#destroy

Stores could have their whole adjustments history nullified or destroyed
for incompleted orders.

Huge thanks to @athal7 for reporting the issue
Fix broken icons in the admin interface.
fix for payments made via /admin

orders placed via /admin were being charged twice.

See these two lines from Spree::Admin::PaymentsController:

    while @order.next; end
    @payment.process! if @order.completed?

For incomplete orders the first line will trigger callbacks that cause
the payment to be charged if the order reaches the "completed" state.
Then the second line will process the payment *again*, resulting in a
double charge.

We can't just remove the second line because orders that are already
complete won't trigger any callbacks from the first line, so these
orders need to have their payments charged manually.

The effect of the bug in our case was that Braintree rejected the second
(duplicate) billing on the payment, and this resulted in the Payment
object being marked as failed when actually it succeeded on the first
attempt. So it appeared from within Spree that a successful payment
was a failed payment.

Fixes #4768
Add instructions for contributing to Bonobos fork
Update orders.promo_total in OrderUpdater

NOTE: Cherry-picked from this spree pull request until it gets officially resolved: https://github.com/spree/spree/pull/4607

orders.promo_total field wasn't getting updated in certain cases, like when you add the promo first and then a line item afterward.
the *adjustment* got updated and the correct number was displayed in the cart, but the orders.promo_total value was incorrect.
Ensure correct payment amounts

When paying with only one payment method, ensure that the amount charged equals the amount due.
Pass in order params on order creation so they can be overridden
Use an InMemoryStore to access certain Spree preferences.
add "expected_total" param to checkouts controller

for https://trello.com/c/c0m8hq7y/163-fix-hack-for-forcing-correct-payment-amount-at-checkout

allow the frontend to tell the backend how much it expects to be charged before charging.
if the amount doesn't match then return a 400 with a specific error message.