[HttpFoundation] MongoDbSessionHandler supports auto expiry and auto index creation

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #11508
| License       | MIT
| Doc PR        | no

ToDo

 * [x] Fix Tests

Looking for feedback on this early PR.


This adds a config option that disables the PHP GC method call from doing anything,
It also means that the write method sets up the auto expiring index.


Ref: #11508
@Tobion: In https://github.com/symfony/symfony/issues/11508#issuecomment-50465658, you mentioned that the session lifetime option in Symfony sets the `session.gc_maxlifetime` INI value. Do you have a reference for this? I couldn't find it.

One concern I have is that we're storing the option's value from *a particular point in time* in this calculated value. If the PHP configuration changes because session lifetimes need to be extended site-wide, this storage layer is still going to delete those records based on the original time. I would assume other storage layers would simply delay their `gc()` step and allow session data to persist. That seems like a caveat of using TTL indexes with `expireAfterSeconds` of 0 and not relying on PHP for garbage collection.

Just for context, ZF's [MongoDB session handler](https://github.com/zendframework/zf2/blob/master/library/Zend/Session/SaveHandler/MongoDB.php) stores the lifetime (i.e. `session.gc_maxlifetime`) with each write. That implementation requires that the session lifetime is kept in sync with the TTL index's `expireAfterSeconds` option, but it ensures that behavior between MongoDB's deletion routine and PHP's garbage collection are consistent.