Clean up doc blocks for assertTags.
Fix typo.
Make assertTags() run much faster.

Generating the various permutations a priori is incredibly expensive
with sets of attributes. Using nested loops that look for matches is
more efficient.

Add replacments for `.*` and `.+` in preg:/ prefixed attribute matchers
so they do not greedily eat all content. This also requires that preg:/
based attribute matchers *must* be quoted.

Fixes #3072
Fix a few flaky/bad attribute matchers.
Use alternate quoting in assertTags()

When a preg pattern contains no `.` it probably doesn't need quote
anchors.