rename dynamic to assets
add utils for getting `destExt` and an engine associated with an extension
changes to how paths are handled in normalize-file and parse-path