Change the expiration behavior of sessionToken

See https://bugzilla.mozilla.org/show_bug.cgi?id=1022678

 - [x] Automatically prune ONE_DAY old not validated sessionToken
 - [x] cleanSession should remove both redis and longStorage keys.
 - [x] As soon as a sessionToken is validated store it in a long live storage
 - [x] Store the last usage and the date of activation of a sessionToken
 - [x] As soon as the persistentStorage is set prune volatile data.

We will use redis for the validation flow and as soon as the MSISDN is validated, drop validation data and build a longlive database entry to store MSISDN, creation date and last update date
Trying to add some more context here as it could potentially help understanding why it's implemented this way.

There are two ways to implement this:

- We explicitly define a proxy and it's part of the architecture of the software;
- We leverage the backends mechanism in order to use a proxy.

The latter approach hides the complexity of having multiple backends from the index (controller). Index only knows it's storing data, but doesn't really know where it's stored. It delegates this to the storage.

Then, it's possible to have a redis storage, a dynamodb storage, or a storage that's proxying to somewhere else.

I very much prefer this approach as the storage is responsible for everything, and you don't need to have two layers of abstraction when you don't need it. (e.g. if you want to only write everything to redis, then there is no need to use a concept of proxy).