Booking lifecycle with WooCommerce

Widget creates a booking (`wcphoto_booking`) as `pending_payment` and adds the mapped product to cart.  

Checkout locks quantity to 1 and shows date/time meta plus link back to the booking page.  

When the order status becomes `processing` or `completed`, the booking becomes `confirmed`.  

If the order becomes `cancelled`, `refunded`, or `failed`, the booking becomes `cancelled`.  

If no order attaches and hold time expires, cron marks the booking `expired`.