3 Bug Fixes

1. Fixed the failure in the variable tree flattener tests

2. Fixed a bug in expression gradients that made the complex step calculation fail (even though it got the answer)

3. For workflows with solvers, if we are doing full model finite difference on an some intermediate input or output, and the subsolvers are not relevant to that pair, then don't include them in the derivative graph and don't include them in the pseudo_assembly's iteration list.