Implemented the Observer pattern. Fixes #8.

This allows the program to output information regarding progress, a must
for performing additions to a large number of files. The observer pattern
was chosen as it will likely be the most versatile for when we add a
proper GUI.

Note that the object messaged by the observables are subject to change.