First pass at cycle detection.
While we are here, virtual_host is redundant, it can be inferred from the URI.
Cycle detection for bindings too, plus a test.
Merge default
Fix tests post-merge
Merge bug 23906