Feature/test application

I have not managed to include variadic templates so I am using bind instead since it is a lot easier to warp calls in a function catch exceptions.
Added dry-run mostly for the future.
I have left out any major re-factoring for now. Using boost::optional for parameters could make things a lot easier since we can know if the value has been set or not (instead of having a default value).
There are only a few tests for now but I would rather not keep this in a completely separate branch for too long.