lab 4: guild: added generation of receive ESL for the flowershop to guild
channel in FlowerShopProfilesController.createShop()
lab 4: guild: committed changes from last message and setup a form to set the
channel's send URL from the shop list page
lab 4: guild: added EventDispatchController and tested that it validates the
channel on which events are received.
lab 4: guild: added event transformation/rendering to EventDispatchController
lab 4: shared: added EventHandler interface and SingleEventTypeHandler base
class; guild: added a collection of EventHandlers for the shops channel and
set up a handler stub for the rfq:delivery_ready event.
lab 4: shared: made EventHandler.handle take a channel parameter which may be
null if the event is to be handled in a free-standing fashion; updated
SingleEventTypeHandler to take a channel and pass it to the handleImple
method; guild: updated rfq:delivery_ready handler and added a temporary
implementation to send back an rfq:bid_available event
lab 4: shop: corrected AccountsController.saveChanges to handle updating a
driver profile instead of always trying to create and register a new one, the
bug was introduced when replacing the former manager's createOrSave method
with a call to only the register method of the new StorageManager.