Re-implement "dupe add" using a free monad

* Seems like a good abstraction for the kind of actions we need to perform
  to interact with the store for duplicates
* Currently only have a fixed debug implementation that prints to the console
** Future check-in to create proper implementations