depend on TokenInterface instead of UsernamePasswordToken
check for empty users in TokenInterface

As `TokenInterface::getUser` may return `null` (specially `AnonymousToken::getUser` will do that)
extract `getCustomerFromToken`
unit-test User\CustomerWrapper
add behat-like scenario phpdocs to test
Fixes #349
Merge pull request #350 from elcodi/fix/changed-abstract-carrier-base-range-table-name

Fixes #349
Merge pull request #348 from elcodi/fix/customer-wrapper

Extend `CustomerWrapper` support for `TokenInterface`
Save couponAmount and productAmount in newly created Order

In order for the couponAmount and productAmount to be correctly stored
during th CartOrderTransformer::createOrderFromCart() process, we must
ensure that a correct amount is initialized in the Cart object when the
cart.onload event is triggered.