add 'keys' option to allow duplicate matching on arbitrary attributes

- towards addressing #427
- TODO: invert key list
- TODO: implement alternative strategies (fp, md5, etc)