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