Create Spree::Core::ControllerHelpers::Order module's test
Fixes #5298
Fix deprecation.
Let PaymentMethod create a customer profile using a payment profile

In the original code, `payment_method.create_profile` is called only when the source has neither a customer profile nor a payment profile.
This patch removes that check in order to create a customer profile using a payment profile.

Closes #5292
Remove default_notification_payload method

It's unused method.

Closes #5295
Create Spree::Core::ControllerHelpers::Search module test

Closes #5294
Allow for notification of API errors

Due to the way the rescue handlers are setup for the API, there's no easy way to alert Honeybadger/Airbrake/etc of an error in the API. Instead we have to check the client error JSON and debug from that which is not very ideal expecially if we don't control the client code. This is a simple change to let people decorate in a hook on ```error_during_processing``` so that we can notify on error.

This should help me get rid of one more ```class_eval``` and ```alias_method_chain``` in my application.

Thought this was more flexible then to have but open doing the KISS solution below:

```
if defined?(Honeybadger) then Honeybadger.notify()
```

incorporate feedback from jordan, make this proc based

Get rid of more class evals and let people use this as a config via Proc.

Closes #5285
Refactor Spree::OrderContents#add_to_line_item so that the logic of setting the line item price based on the product options is reusable when creating an updating a line item

Closes #5274

Making Spree::LineItem#options= more robust for vanilla line items.

Using assign_attributes rather than iterating through the hash and setting the option values manually
make sure we get the current order for use in the cart as well. Refactored some shared code as well.

Fixes #5300