Feature/openid connect

Added interfaces to all the entities, created factory for entity creation, updated examples to reflect the changes, updated unittests, updated phpdoc to reflect all changes.

With this pull request people will be able to use their own entities (Doctrine, propel, etc), use their own factory to have the libraries code generate their own entities.

Added support for OpenID Connect 1.0, only "grant_type" authorization_code is supported for now
How is this a "bad change"? Some more info might be handy, the Entity implements the Interface just fine. So people can implement their own entities.