#2226 refactored Adam's patch re WP user account creation.

The key change is that if no email/an invalid email addr is provided and/or no password the user account creation will fail (whether WP integration is enabled or not).

Still todo: if WP integration enabled, do we abort Shopp account creation if WP account creation fails for any reason?
Merge pull request #2246 from ben72/master

Fixed product and category slug editing
Added contribute invite text
Added ShoppDiscounts system

The ShoppDiscounts system replaces CartPromotions and CartDiscounts.
Promotions are now kept in ShoppOrder()->Promotions outside of the
session data. Promotions are loaded only at the time of matching to
apply discounts.

The new system reorganizes the code into better encapsulated units.
CartPromotions is now ShoppPromotions. Cart Discounts has been divided
into ShoppDiscounts, ShoppDiscountsRule, and ShoppOrderDiscount.
Implemented ShoppDiscounts in ShoppOrder and ShoppCart
Refactored the ShoppCart request processing

Reorganized the shopping cart request processing by better
encapsulating the functional units.
Set Settings singleton constructor to private
Fixed a context error when deleting a promotion
Implemented new discount system
Coding standards cleanup
Code standards cleanup
Added new classes to loader
Updated the Cart Theme API to access the discounts system
Coding standards cleanup
Added precision rounding
Added OrderAmountItemDiscounts for OrderTotals tracking
Change singleton method standard to "object"
Changed the Shopp class to a singleton implementation
Removed Promotions property from shopping session storage
Changed smart collection slug property to an array and code cleanup