[CT-2652] Remove "Replaceable" class usage as much as possible
We pull in a Replaceable class which contains a "replace" method in a lot of our classes. This method is designed to replace the current object with a newly constructed one based on kwargs, and is in general not a very good idea. If we want to replace a current object it would be better to be a lot more explicit and intentional about what's happening.
Remove the usage Replaceable class where it's found in dbt-core, look for breakage, and determine if we really need to do this or could just update the current object.
Need to check that this isn't used in adapters as well. Might be easier/better to move it to the dbtMixin class.
Added this issue to the 'Stabilize External Interfaces' Epic under Artifacts since it plays nicely with our efforts to make the base artifact dataclasses 'plain old data objects'
Updated this issue to be scoped to the usage of Replaceable in dbt-core, since it is now defined in dbt-common. Its full deletion can be done as a separate issue in dbt-common, once dbt-adapters has gone through the same exercise.
An initial pass was taken here: https://github.com/dbt-labs/dbt-core/pull/7844 but will likely need to start from scratch given the artifact + dbt-common refactors since it was initially spiked.