Remove dependency on "useful" library for packaging purposes.

This dependency pulls in a number of other dependencies which we don't
use but which are difficult for downstream packagers to deal with.

Include our own version of map-vals (because seriously, why is this
not already part of Clojure) and update-first (because re-forming
those problems without it crazy convoluted). But our implementation is
a fair bit shorter because it doesn't have to handle all the edge
cases.