decompose_path splits a path into the directory name, filename
without extension, and extension. strip_extension and
get_extension provide shortcuts to the second and third parts
of the filename. recompose_path takes the result of
decompose_path and returns complete paths.copy_dir copies the contents of a directory, possibly recursively.