Regex dispatcher for `resource`

We might want to break up the resource function which converts URI's into data objects of some form or another.  We can't use our normal dispatching tricks here because we can't dispatch on type.  

Instead lets dispatch on regular expressions
```Python
    >>> f = RegexDispatcher('f')

    >>> f.register('\d*')
    ... def parse_int(s):
    ...     return int(s)

    >>> f.register('\d*\.\d*')
    ... def parse_float(s):
    ...     return float(s)

    Set priorities to break ties between multiple matches.
    Default priority is set to 10

    >>> f.register('\w*', priority=9)
    ... def parse_str(s):
    ...     return s

    >>> f('123')
    123

    >>> f('123.456')
    123.456
```

cc @talumbau 
@nevermindewe in particular this function might interest you.  Works like this

```Python
>>> csv = resource('/path/to/my/file.csv.gz')
>>> csv.open
gzip.open
```