Fix order email assignment via api

Before a request like this:

  curl http://localhost:9292/api/checkouts -X POST --data "order[email]=check@spreecommerce.com"

would create an order with an empty email. Now it also allows to set an
order email different from the current authenticated user via that same
request.

Initially I tried to assign the email provided using

  `order.email = params[:email]`

but calling `save!` wouldn't persist that email, probably for some
voodoo going on in `associate_user!`

Fixes #3788
Destroy order if import via api raises any error

So that no unintentionally partial order remains in the database

Fixes #3788