Refactor changelog entry generation
Previously, a changelog entry was pieced together directly in the
changelog visitor and a slightly tweaked copy of that code existed in
run() which processed uncommitted changes.
This moved changelog generation into its own module containing
ChangelogEntry, an augmented special purpose dictionary. It carries all
information necessary to generate a changelog entry and contains the
logic in its format() method.
Signed-off-by: Nils Philippsen <nils@redhat.com>