Add -l, --files-with-matches option

- This option only prints filenames
- Fix handling of standard input arguments
- Mixing conflicting flags not checked
Add boyer_moore.py file, slim version of mygrep.py

- Base for implementing boyer-moore string search algorithm
Rename boyer_moore.py to search_test.py

- Add cProfile profiling
First pass at boyer-moore string search algo
Preprocess shifts once instead of every find

- pass shifts dictionary around
Add rightfind() fn to replace str.rfind()

- no noticeable performance difference based on searching 'the' in bible.txt
Refactor

- rename variables, functions
- add functions to route find options
- restrict printing to print function
- handle option conflict for printing
- reformat lines lengths to <= 79 chars
Simplify ignore-case option handling.

- Go back to handling ignore-case option in index_find function
- Remove extra find functions
Create bm class, add good suffix case 1
Complete BM search. Experiment with times

- experiment with while vs for, range vs xrange, local vars
- adjusted bad char processing to work with good suffix
Move NaiveSearch to boyer_moore

- add -b option to specify bm search (default = naive search)
- also remove commented/unused code
Add README