Revert "[bug] /\x{1ffc}/i =~ "\x1ff3" didn't match"

This reverts commit 46ac8728929242b043ee0e1f5bbd757c8ff6afd2.
Revert "[bug] /^ss$/i doesn't match "\x{DF}"" partly

This reverts commit f5eae55638c0e9c19d83afa4fc835347930ff2bc partly.
Use case-insensitive BM search

When all expanded strings are same length, case-insensitive BM search
will be used.
This commit replaces the following commits:
* f5eae55638c0e9c19d83afa4fc835347930ff2bc
* 46ac8728929242b043ee0e1f5bbd757c8ff6afd2
/(?i)\u0149\u0149/ =~ "\u0149\u0149" doesn't match (Issue #40)

'\u0149' is casefolded into '\u02bc' + 'n'.  They were compiled into
'exactn-ic:\xca\xbc' + 'exact1-ic:n'.  One character was divided into
two opcodes, so it couldn't match to a character '\u0149'.
Merge a series of 'exactn-ic' and 'exact1-ic' into one 'exactn-ic'.
Add test for issue #40