Sorry to be harsh, but this isn't particularly clean. It means that we are now pushing and popping from 3 different stacks as we expand macros, 2 of which contain very similar information* and one of which is entirely redundant (`func_depth`); and it also duplicates the implementation of `file!()` and `line!()`.

*I would say that `mod_path` should actually be adjusted to include the info that `func_path` does, since it currently gives non-unique names for modules in functions