Chord and Snapshot mappers should drop facts not in dictionary.

Fixes #381.

This change also introduces a set of dropped counters for
visibility into what is being dropped for debugging purposes,
_however_ given that this is a fairly standard situation in
the future we should consider moving it behind a debug flag
or similar to avoid polluting debugging with noise.

Ready for review once tests pass /cc @domdere @nhibberd @charleso 
I heard you swearing about `and` before. I have the same problem in that you don't know which one failed.

Wondering if (in future) we should do `(context.ok.counter, context.skip.counter, context.drop.counters.values.sum) ==== (context.facts.size, ..., ...)`. I still prefer one of these over doing the thrown exceptions (but happy to hear other opinions)