Change InventoryUnit#backorderable_for_stock_item implementation

Users were getting ActiveRecord::ReadOnlyRecord when updating a stock
item with backordered units. Due to ActiveRecored `joins` return
readonly objects

[Fixes #3066]
Refactor stock item process_backorders

Consider a backorderable stock item with 5 on hand
Customer goes to the store and purchase 10.

At this point stock item on hand is -5 (it has 5 backordered inventory
units)

Admin goes to stock management and adds +30 of that stock item

Before:

  * `save!` stock item with count_on_hand = self.count_on_hand + 30
  * On after_save loops through backordered units and calls
    adjusts the count_on_hand, by -1, and calls `save!`
  * Gets ActiveRecord::StaleObjectError

After:

  * Update count_on_hand attribute value (does not `save` yet)
  * Process backorders while there are items in stock (if any)
  * `save!`

Fixes #3066
Remove wrong assumptions from inventory unit spec [Fixes #3111]

That caused specs to fail on postgresql