Add WC_API_Exception class

Part of #4160
Add wc_update_order_item() function
Fix misc docblocks
Add update methods to WC_Abstract_Order

These methods compliment the existing add_*() methods and provide a
consistent interface to add and update items for the order.

Part of #4160
Add calculate_shipping() method to WC_Abstract_order

When the update_shipping() method is used, the order shipping amount is
not properly calculated unless the shipping costs are summed.

Part of #4160
Fix WC_Order::get_user()
Include order item ID and rate ID in WC_Order::get_tax_totals()

Part of #4160
Add WC_Order::get_order_subtotal()

Convenience method to return the order subtotal

Part of #4160
Tweak REST API order response

* se WC_Order::get_order_currency() for currency
* use new WC_Order::get_subtotal() for subtotal
* add order item ID and rate ID to tax lines

Part of #4160
Refactor create order method

* handle errors through WC_API_Exception
* abstract order item creation

Part of #4160
Add edit order REST API method

Part of #4160
Add REST API create/edit order actions & filters

Part of #4160