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.