slough of general changes to the app

_This is a bunch of small changes to the app. Each can be made as a separate PR, if you like._

Most changes focus on bringing the generated calendar feed more in line with the iCalendar specification. Such commits are:

- 6a30f6d
- 491066f
- 045d3de
- 6a2a476

Additionally included are two pedantic code quality changes: 30862c0 & 55e232b.

This further abstracts the routing logic to DRY up the code, a9dbff4.

Finally, calendar extensions (`.ics`) were not working, this is remedied by 22c8b35.

More information on each change and its reasoning can be found in the commit messages.