Reorganized argument parsing to use class structure, and added support for shorthand ranges such as "both 12", which would expand to include all grants and apps in the year 2012.
Ran test cases against program, fixed a nil being passed instead of [] in FileRangesHandler.get_ranges when there were no ranges or filenames passed.  Reordered the class declarations in order of declaration (ArgumentsHandler was moved from after all the other arg parsing classes to first).  Confirmed that shorthand ranges such as 12-14 worked properly.
DRYed out code by removing "app", "grant", and "both" strings present throughout the range parsing code with references to constants FileRange.[app|grant|both]_key.
Made argument parsing more strict: actions are no longer removed from the arguments array.  Previously a statement such as "both extract 120000-120400" was valid to the range parser because the action keywords were removed.
Improved helpfulness of errors when parsing ranges from user input: added a rescue statment around range parse which in turn throws a more readable error.
Merge pull request #18 from ahirschberg/file_range2

Restructured argument parser to use classes, improved range support