#650. Changed the entire customer service to use encodePassword, rather
than each method individually invoking the passwordEncoder and
determining their own salt.
(cherry picked from commit d033fea40e0690d9b211d2b1e15f07e1857eef4c)
#652. Have a situation where the salt that is generated is random and stored with the hashed password.  In this case, next time a call to encodePassword is used a new salt is generated and the password does not match. Instead, I added a method to customer service called isPasswordValid that delegates to the underlying passwordEncoder to validate the password. This is superior to encoding the password yourself and checking if it is valid. Because in the case with a randomly generated salt, it will never be.

(cherry picked from commit bf2d178500918c93e2a1925944df49c70f38426f)
Ensure that order subTotal is recalculated if a totalitarian FG offer is chosen over the item/order offers.    #625
#658 - fixing stack trace and expiry date issue on checkout form
Fixes #661 - Put fulfillment option in the blOrderElements cache region
Merge branch 'BroadleafCommerce-3.0.x' into develop

Conflicts:
	core/broadleaf-framework-web/src/main/java/org/broadleafcommerce/core/web/controller/checkout/BroadleafCheckoutController.java
	core/broadleaf-framework/src/main/java/org/broadleafcommerce/core/order/domain/FulfillmentOptionImpl.java
	core/broadleaf-framework/src/main/java/org/broadleafcommerce/core/payment/service/module/NullCreditCardPaymentModule.java