DNS entity improvements

BindDnsServer rebinds, supports CNAME records and is better tested. 

@grkvlt Would be great if you could review this thoroughly.
Simplicity. We can just follow `onEntityChange` and track members we know are usable with `HasHostnameAndValidLifecycle`. There's no need to track entities to remove from maps and multi-maps. In a similar vein to my questions on the concurrency model. I could be convinced that this is grossly wasteful but figured it will be called rarely so is excusable.