Refactor to use DSL like language and pass most rubocop tests.

Divide the code in three areas:
 1.- Reading and writing the gemfile (A general refactor)
 2.- Cleaning operations
     - Make the individual cleaning operations as simple and modular as possible
 3.- Cleaning utilities
     - Hide the complexity of how the new hash is updated by using simple
       names and passing blocks (lambdas)