path.[ch] - canonicalisation
util/ tests
Handle cpp dependencies via -MM
Tweaks to dynarray_pop() / asserting
Handle leading ../ in canonicalise_path()
Merge canonicalisation code into feature/cpp/dep-gen
cpp canonicalises its include paths

This looks nicer in the output, and means we can uniq paths for
dependency checking (next).
Remove dyn{hash,set}*
dynmap allows a null value
Use memcpy() in canonicalise_path()
dynmap_exists() for null-value presence checks
cpp only outputs line info if !no_output

This saves having to set the line_info variable when also setting
no_output.
cpp uniqs when doing dependencies
test/ files for cpp-depgen
Wrap the dependency/-MM output
Use ${CC} for makefile dependency generation
cpp dependency wrapping test
Merge branch 'feature/cpp/dep-gen'
Resolve comparisons and short-circuit types to int, not _Bool
Floating point short circuit resolves to int, not float