Add --type-add option which mimics the corresponding option in ack.
Modify processing of options like --php and --nophp so that:

  * There is less code duplication.
  * They take into account file extensions added by the --type-add
    option, added in commit 8cdd6b2039c1fce182ffd21f628af9065c351c14.
Add a --type-set option which mimics the corresponding option in ack.

Note that due to the way option processing currently works, --type-set
<new_type> can be used with e.g.: --type php, but NOT with --php
(because processing of the latter type of option happens at an earlier
stage than the processing of the --type-set option that creates the new
file type). This is true even with commit
ae750d128ac57751dfc35fc58fd70b46aa67e741i, which ~will~ help if the file
type already exists.
Tricky code involving a subclass of GetoptLong called RelaxedGetoptLong
that is designed to make it possible to do:

rak --type-set new_type=.ext1,.ext2 --new_type
Merge pull request #1 from msabramo/RelaxedGetoptLong

Added --type-add and --type-set options from ack