Add DbContextSavingChanges event, then use it to achieve orphan-deletes
Move Kooboo.Commerce.Data.Mapping to Kooboo.Commerce project
Move web related stuff to Kooboo.Commerce.Web.Framework from infrastructure project
Remove HAL because it's not used anymore, and remove Kooboo.Commerce.API.CmsSite
Refactor current commerce instance resolving
Now commerce area pages use "instance" query string to resolve current instance instead of "commerceName"
Refactoring: Simplify event dispatching; delete over abstracted interfaces
Simplify activity event registration

- Remove IBusinessEvent because it's currently only used for activities, and we have ActivityEventManager to do this now
- Remove EventAttribute and CategoryAttribute because we have ActivityEventManager now
Remove activity attached/detached events

These events were used to delete orphan AttachedActivityInfo, which is a hack for Entity Framework.
We have a better OrphanDeleteHandler to do this now.
Move tab plugin sample out of the main commerce web project and add packing tools for it
Rename File control to FileUpload, and remove Kooboo.Commerce.Web.Form from view web.config cos it can easily cause class name conflicts
Now developers can extend condition parameters on any types

Before developers can only extend parameters on the root data context type (e.g., OrderCreated class),
now they can extend parameters on Order instead of OrderCreated. So any data context containing the Order can use that parameter.
Refactor Kooboo.Commerce.Data
Remove INotifyXXX interfaces, we better raise these events explicitly
Refactor and code clean up for services and repository
Remove the back reference to Brand/Category/... in BrandCustomField/CategoryCustomField...
Use a default view for tab plugin if it doesn't provide one
Remove Payment.Target and add Payment.OrderId because we don't want to over abstract it. Keep it simple
Refactor price calculation
Add ChangeShippingMethod submission plugin