Hold mutate on exclude

Closes #1 

This adds:
* a wrapper for the object so that delegated methods don't have to be privatized in the `HashOut` module. It also provides a clean way to generate a duplicated object.
* an `Excludable` module. It's extended on the duplicated object in order to collect exclusions.