Some cleanup of code:
- type-hint objects when possible,
- don't use container parameter in constructor
- reduce usage of container
- remove some code duplication
- made configuration a bit more readable
Refactor code to use Symfony OptionResolver component
Fix problem with twig extension after refactoring, cleanup after review
Merge pull request #354 from stloyd/feature/revision

Refactoring.

Some important changes:
- refactor code to use Symfony OptionsResolver component,
- type-hint objects when possible,
- don't use container parameter in constructor,
- reduce usage of container,
- remove some code duplication,
- made configuration a bit more readable