Refactor resource objects to expose graph nodes more directly

Currently the resource object have a thin veil between standard imperative python code and the lazily evaluated graph structures. This prevents access to metadata in the graph (such as labels, which are used to to evaluate where a node is from and if its a secret-containing file).

This PR exposes the yaybu providers to the graph nodes directly, which improves type safety and allows use of other yay API's such as as_safe_string (which masks out any strings that came from encrypted files).