Implement symbol renaming

Currently this doesn't work unless one first loads the buffer into the
repl, which is weird.  At least it wasn't obvious to me how cider was
involved.

The middlewere actually reads files, so any changes not saved to file
won't be reflect in the renaming.  We've taken it upon ourselves to at
least save the current buffer, but we might consider saving all project
buffers or prompting the user.

I've also not found a way to temporarily suspend the recording of undo
information.  I'd prefer we not litter the undo list and have the user
undo by just renaming again, rather than hitting `undo` x times where x
is the number of refactored occurrences.