Added SignatureKey.appName, providing a way to "name" the app
App name will be used to suffix restx cookies.
Deprecated the old SignatureKey(byte[]) in order to encourage the definition of an appName
Using SignatureKey's appname in order to generate RestxSession & RestxSessionSignature
cookie names, allowing to work on different restx application on localhost.

Note that RestxSessionFilter.RESTX_SESSION & RestxSessionFilter.RESTX_SESSION_SIGNATURE
disappeared, in order to encourage using the preferred getRestxSessionCookieName()
and getRestxSessionSignatureCookieName() which are based on the signature's appName
Added SatisfiedBOM.getOneAsComponent(Query),
allowing to return one component if query matches one named component,
or absent otherwise
Made Query.setMandatory() as public,
since mandatory() & optional() public methods are shortcuts for every possible setMandatory() parameter values
It will be useful to compact FactoryAnnotationProcessor code
Introducing Optional injectable components
If a @Produces methods needs a @Named Optional-type parameter,
this parameter will be injected only if available, otherwise, Optional.absent()
will be injected
Created restx-factory-testing module,
allowing to test restx-factory annotation processor
and implemented tests for optional & mandatory dependency injection
in @Modules
Header compatible token str conversion moved to MoreStrings
and provided unit test for it
Provided a restx session cookie names generator
This will allow to override the default RestxSession & RestxSessionSignature cookie name
which give hints about the server running technology.
Now, if wanted, users will be able to override these generated names.

Application name is still used to generate these cookie names, however, the app name
is not in the SignatureKey object anymore (as discussed here https://github.com/restx/restx/pull/33#issuecomment-22932118)
and is a @Named String component (named "app.name").

First usage of Optional injectable component is made with the app.name component,
to detect "old" application not having defined an app.name, and where we should keep
generating old-school RestxSession & RestxSessionSignature cookie names (not being tempered by the appname)
fixed bug, thanks to unit tests
removed useless @Named in tests
Throwing an error if Optional parameter doesn't have any parameterized type
NamedComponent's component cannot be null
Reverted "Made Query.setMandatory() as public".
See comment https://github.com/restx/restx/pull/33#commitcomment-3942646.
This reverts commit a1bbc07d8435b4915375523d5025abf7e7bb5d6f and updates commit 375406e42c4436085b878ab0770d57cd69d35fdc
Moved MoreStrings.headerTokenCompatible() to HTTP.headerTokenCompatible()
Merge pull request #33 from fcamblor/introducing-appname

Different RestxSession cookie names for different apps & Optional injectable components support

+ When developping several restx application (thus, working on `localhost` domain), restx cookies are interfering since their names are the same.
Moreover, we now allow to change the `RestxSession` & `RestxSessionSignature` cookie names if the restx developer doesn't want to tell its consumer that the serverside technology is based on restx.

So we define:
- An `app.name` @Named String, not set by default (to keep backward compatibility), allowing to suffix restx session cookie name with an app name. Thus, you will be able to work on different apps locally, which will have specific cookie names for the `localhost` domain name.
- A RestxSessionCookieDescriptor component, intended to welcome generated cookie names, @Provided by default in `SecurityFactory` with following values :
-- `RestxSession` & `RestxSessionSignature` if `app.name` @Named String has not been defined (this will keep bacward compatibility)
-- `RestxSession-${app.name}` & `RestxSessionSignature-${app.name}` is `app.name` @Named String has been defined
Obviously, this behaviour can be overriden at the user convenience.

+ handling `Optional` injectable components
if a @Provide method signature is looking like this :
```
@Provides
public Foo foo(Optional<Bar> bar) {
}
```
The Bar resolved component will be injected only if found. Otherwise, the Optional.absent() value will be provided.
This obviously works on @Named components too.
Note that as soon as you're relying on an Optional component, you :
- Will need to provide a Generic to the Optional used (otherwise, you will have a compile-time error)
- Won't have any component existence check (since you explicitly said you're not *hardly* relying on the bar component)