Add EventQueue and refactor router frontend to use client/cache

What happens if I add, delete, then re-add with the same id (ids are just namespace-id, right? not a generated uid)?  Does that break the assumption we discussed about empty delete mappings?  I'd expect the add event to be in the queue and the delete gone.