The base path is now *outside* of the macro directory; allowing for a
more integrated view of `dfi`'s entire `root` system. This is more
apparent once running an interactive session where the expectation is
(more intuitively) that any path should be relative to 'src/root' and
not 'src/root/macro'.
The rationale for why this was in 'src/root/macro' to begin with stems
from how `root` (by default) will automatically load rootlogon.C in the
directory that `root` is started. This is causing more confusion than
not because `dfi`'s usage of `root` is not limited to macros.
These changes skirt the line between needing a major API bump and not
but, so far, appears to be on the side of *not*. However, the TODOs
noted for macro loading should be addressed prior to any API changes.
- Refactor using common types that were once internal
- Removes ancient macro approaches to C++20 solutions
- Changes `Exception` message type to use std::string
* std::string_view isn't worthwhile in this context
- Factor out respective common from macro and apply to all scopes
* `dfi::common`
* `dfi::macro::common`
* `dfi::plugin::common`
- Add deprecation warnings in `dfi::macro::common`
* Common functionality (not macro specific) is now in `dfi::common`
- Add convenience wrappers to inner common impl, where appropriate
* Allows for backwards compatibility
- Add/update/clarify code docs and Doxygen definitions
- Related refactoring
NOTE: all changes are backward compatible (no need to bump major).
- This is possible now that `dfi`'s ROOT build supports C++20
- No internal `dfi` API or impl changes are necessary
* This includes any Botan signatures
- Implements support for docker-finance C++ plugins
- Adds shell command execution wrapper
- Refactors previous loader path
* A './' path is unnecessary and will break calls to '/' path