Implemented ignore case option.
Regrex should not be compiled each time.
Implemented smart case option.
Added a pattern struct.
Extracted pattern and regexp from each package.
Fixed wrong tests.
Added a smart-case test.