lab 4: shop: removed DriverProfile and all uses of it; removed the account
management page since it had only been used for driver profile details.
lab 4: shared: added append method to URLPathBuilder. shop: updated
OrdersController.setSelectedBid() to use the URLPathBuilder in preparing
the redirect paths.
lab 4: shared: added EventChannelUtils with methods to notify (send) an event
on a specified channel with a specified event generator. shop: updated
OrdersController to send an rfq:bid_awarded event when a bid is selected.
lab 4: shop: in OrdersController removed prepareOrderProfile support method
since it was only used by one public method (i.e. put the method content in
public method), and updated the redirect location when an order is submitted
to go to the order profile page.
lab 4: shop: OrdersController removed unused import.
lab 4: shop: modified DeliveryBid to have a driver ID instead of a username,
updated references/usages of DeliveryBid, particularly parsing rfq:bid_avail-
able events into DeliveryBid objects. guild: set a driver id value in the
rfq:bid_available events.
lab 4: shop: added a State enum to Order and updated OrdersController to set
the order state to WAITING_FOR_BIDS when first created, and then to
WAITING_FOR_PICKUP when a bid as been selected, updated the list and profile
pages for orders to indicate the order state.
lab 4: shop: added maySelectBid query to OrderPolicy and updated profile_order
to query the policy when determining how to render the bid selected column
contents.
lab 4: shop: added maySignalPickup query to OrderPolicy, added form submit
button to the order profile page for signalling an order pick up, and added
handler to OrdersController to process an order being picked up and changing
the state of the order.