Installation clients

IMHO this is bad API design, and unlike for the proposal client, it is easy to fix. Why don't we have `info` as a private helper and let the user override
```ruby
# @return [Integer]
def steps; abstract; end
# @return [String]
def title; abstract; end
# @return [Array(Symbol)]
def when; abstract; end
```