Case insensitive and pattern matching

This replaces pull request #1751. This is for issue #1724.
Matching isn't *always* case-insensitive.