add compiled templates atom
add get-compiled-template function

eventually this will handle fetching pre-compiled templates out of the
cache, but for now this will help us refactor everything else to use
this instead and work with compiled template objects instead elsewhere
add helper functions for compiling a template from a string or file
update render-* functions to use compiled template objects
update doc comment for render function to indicate it doesn't use caching
some type hints
add helper functions we'll need for file modification date/time testing
add helper function to test if a file is newer then a given timestamp
add function to return cached compiled templates or caching a new one
update get-compiled-template to use caching instead of always compiling
rename cache related functions to better indicate they have side-effects
add function to reset the compiled template cache