Exclude pattern rebased

This is #1651 rebased and with the feedback I left there addressed.
It was easier to write this way instead of copying and pasting.  Also, I expect these specs to change together, since `pattern` and `exclude_pattern` are paired up and will go together in the ordering of processed options.