Summarizer reasons about level instead of size
Summarizer takes a generator function
Inverts added/removed meaning from resolver

Adds a simple implementation of resolvers in JS with quick tests directly using
summarizers instead of a mock. This test showed that added/removed semantics
sounded weird, so inverted them.