Refactor refactor refactor

The main purpose of this refactor was to remove AnalysedFilesBuilder.
Now, the smell adapters, churn and complexity classes receive analysed
files instead of paths and modify them directly. Each of these classes
adds their own "stuff" to the analysed files received.
Make the Main and Mini Orchestrators exactly the same

Now it's possible to remove all this subclassing and implement a single
orchestrator.
Merge all orchestrators
Wrap source control systems in a module

Also rename the source control system factory to Base. The reason it
wasn't named Factory (as it is indeed one) is because other source
control systems will inherit from it. And inheriting from Factory
doesn't make much sense.
Remove methods rendered useless by the recent refactoring
Cache AnalysedFile's name and path
Create SourceControlDouble class

An instance of this class will be created when no source control system
is detected.
Remove noisy test

This test tests something that logs to STDOUT and since I can't find a
way to suppress it, I'll just remove this test for now since it's
annoying and the feature it's testing is really not likely to change.
Move Churn and Complexity calculation into the AnalysersRunner class
Remove magic
Fix `require`s

Some were simply moved, another had been forgotten.
Rename test file
Fix AnalysedFile and Smell tests
Make SmellAdapters' test a little more
Fix setting smells statuses
Do not check for class in the `==` method
Rename parameter
Make Cli a real class
Implement `date_of_last_commit` in SourceControlSystems
Calculate the date of the last commit of each file

I don't like putting this inside the Churn class, but I don't see where
else it should go.