What you are requesting, is probably quite a task to implement in the engine. There are a a lot of corner cases. Material functions can have varying type and number of outputs.
I wanted to express, that as you start working in the engine and its amazing node-based shader editor, you might be temped to create one master material and just use its instances with features enabled/disabled. Well, In long-term it actually proves to take more time and effort, as opposed to using a number of simple, yet specialized for given case materials.