Create class for creating/updating Markdown changelog files
Where #1369 talks about writing a parser of our changelog format, we also need a generator to turn the parsed data back into Markdown.
This generator takes the parser output, which may have been modified to contain new version information, and serialised it back to Markdown. The generator should produce output in the same order as the input, ensuring that an unchanged changelog won't result in different output when parsed and serialised back to Markdown.
Entries may be grouped in a section (Fixed, Added, etc), or may not belong to a section. If at least one section is present, uncategorised commits go in the "Other changes" section. If no sections are present, we simply display the entries directly (aka without a "Other changes" title preceding the list of changes).