Separate out History

History is not an essential part of a shell, but a feature, and
therefore is best implemented as a decorator.