Mostly refactor path.c / path.h

Convert mp_path_join into a variadic macro that calls a function that takes
a NULL-terminated array. Convert the functions that use mp_path_join to
take advantage of the "variadicity", and convert to variadic other
functions where it makes sens.

Allows path accesses without / or \ issues, specially on windows: while /
is perfectly fine on most paths, it's forbidden on \\?\ "super-absolute"
paths.

Don't define HAVE_DOS_PATHS to true on cygwin -- it doesn't.

Implement mp_find_user_runtime_file that uses the XDG_RUNTIME_DIR env var
to locate runtime files.

Allocate the config dirs in a named talloc context for looking less dirty
on the leak report.

Changes functions that can to take const values.