Basic Implementation of Matcher 

I wanted to take a stab at implementing the Matcher functionality.  As a start I only implemented IP matching for single or multiple IPs as an array.  For example:
```
'matcher' => array(
    'ip' => '127.0.0.1',
),
```
or as
```
'matcher' => array(
    'ip' => array('127.0.0.1', '10.1.0.120', '10.1.0.121'),
),
```

Please let me know if this was the direction you wanted the Matcher to go in.
Should not be part of the interface