Easy to setup gem

I added some features to enable a more simple and easy setup:

* An easy to setup gem, throw the possibility to have uncommon/standard path names for configurations and inputs (throw a config file)
* Added some more resilience throw more test in rspec.
* Added some generalisation throw dependency injection.
From the rspec docs:

```Use let to define a memoized helper method. The value will be cached across
multiple calls in the same example but not across examples.

Note that let is lazy-evaluated: it is not evaluated until the first time
the method it defines is invoked. You can use let! to force the method's
invocation before each example.```

as you said before is just a way to redefine a variable setup in the beginning, feel free to propose an alternative if you find this confusing.