Created UUIDGeneratorFactory, FactoryMachine providing utility classes
for manipulating named UUIDGenerators in Factory.

It will allow to define several named UUIDGenerators, and provide utility methods
to replace temporarily a named UUIDGenerators by another one, by playing with a
temporary added machine with a low priority.
This will allow, for instance, uuid generators playback mode in unit tests

Important note : ATM, temporary added machines are added to a specific context named
"uuidGeneratorsLocalMachinesContext". It could be improved in the future if we could
settle sort of "session affinity" between client (tests) and server (restx) for contextual
local machines
Refactored UUIDGenerator class by removing ThreadLocal behaviour
which is incompatible with a client (test) / server (restx) mocking.

Relying, instead, on the new UUIDGeneratorFactory by retrieving
UUIDGenerator components for exception & session resource
uuid generation (which could be overriden during unit tests).

Other impl relying a on UUIDGenerator (namely shell & RestxSpecTestServer)
which should not be overridable, will remain to rely on the UUIDGenerator.DEFAULT
instance.
Added new checkContainsKey precondition
Implemented new given uuid spec rule,
allowing to playback generated UUIDs by UUIDGenerators
Updated restx-server-testing in order to demonstrate usage of given uuids
Now we can add the generated session id as an expectation, during new session creation
Simplified UUIDGeneratorFactory
Not being a useless FactoryMachine anymore
Thus, renamed to UUIDGenerators since this is only a helper class
about UUIDGenerators in DI contexts
Still lowered overriden generator priority (-10 => -10k)
fixed compilation error (missed commited file)
Merge pull request #34 from fcamblor/specs-given-uuidgenerator

Introducing GivenUUIDGenerator

- Refactored UUIDGenerator in order to make it a @Component instead of a ThreadLocal instance
- This way, the @Component could be replaced at runtime (for instance, to enable uuid generation playback mode). 
- Provided some utility methods allowing to add a temporary Machine adding a top-priority replacement for a named component, then cleaning it. 
- @Component with different `Name` will be provided each time an overridable generator will be used in codebase (identified `RestxError` & `SessionResource`)
- Provided `GivenUUIDGenerator` which allows to enable playback mode during a spec test, on a given component's name. Usage looks like this :

  ```
title: should authentication be successful with existing user
given:
  - time: 2013-08-16T16:38:36.549+02:00
  - uuidsFor: SessionUUIDGenerator
      data: [ "e71a0f9f-9082-4626-bc34-3893c540566d" ]
wts:
  - when: |
        POST sessions
        { "principal": { "name": "admin", "passwordHash": "1d528266b85cf052e9a4794803a57288", "rememberMe": "true" } }
      then: |
        200
        { "key": "e71a0f9f-9082-4626-bc34-3893c540566d", "principal": { "name": "admin" } }
  ```

ATM, this relies on some sort of "hack" to share machine between client (tests) and server (restx) : using a named context-local machine with a hardcoded name.
It implies the server `Factory` reads inside this context while looking for UUIDGenerator ... which is not something "obvious" (I provided helper methods to facilitate this, but nobody is forced to use them)
This could be improved by implementing some sort of "session affinity" between client (tests) and server (restx).