Simplify Command

Code looks simpler like this IMHO. 

About #initialize, the main incompatibility is that `@original_hash` is no longer the same object as the first argument. That sounds actually safer IMO, I would even be tempted to freeze it.

Other commits include rationale.