Refactor greppy script

- Decoupling the matching component.
- Adding a generic function to print matches.
- Adding more input arguments checking and a `usage` function.