Use persistent maps so there's no cloning required.
Get rid of the builder and matcher.

Using persistent maps means we don't have to worry about mutation.
Updated the README.