Recursive field support + type-interpretation support

Summary:

- support for 'recursive' field (which calls the ruleset again to match a portion of string)
- support for returning unmatched-suffix fragment using 'tail'(or a configurable name, 'tail' being the default)
- support for type interpretation of field's matched values (via a type called 'interpret'), which supports int, base16-int, double and boolean as of now.
- support for 'descent' field (which is like recursive, but allows calling into a child rulebase). User can specify the file to be used as rulebase, but works similar to recursive.
- a utility(pcons_args function and sisters) for consuming field-declaration arguments, to make consuming optional arguments and generating error messages easier