First pass at refactor
Rolling back part of the shouldExtendBlock optimization from earlier. The optimization was too aggressive, and it started breaking a media query test. The new code is much more conservative in when it will skip performing the extend. It will only skip a block that has no statements in it - excluding other rulesets, which will get extended themselves.
Put back in the hoistable check since it fixes a handful of diffs in our sass.
Merge remote-tracking branch 'origin/feature/extend-support' into feature/printable-refactor
Updates to isPrintable based on test failures.
We found an example of a case where the clearSources fix from before wasn't sufficient. Due to the recursive nature of the algorithm, we were setting sources correctly, but were getting extra sources in trim. This caused the trim behavior to differ. The fix is to clone the extended selector fully, which will prevent sources from being added to the one in our extension subset map. To do this, I implemented a cloneFully on Complex_Selector and a clone on Compound_Selector.
Add debug code to check for sources problems at the root of the cause.
Merge branch 'feature/extend-support' into integration/ddc