Support smart case sensitivity in search
"Smart Case" sensitive search is a compromise between case sensitive and insensitive search.
- If all characters are lowercase, ignore case while searching
- If there are any uppercase letters, take case into account.