Dataset refactoring

Iterates a tad bit more intelligently now and enforces `limit` on local suggestions.

Removed the custom matcher code path – I don't think that stuff worked liked you'd expect it to. I think this refactoring will actually make it easier to add that functionality back in a later release.