Add support for walking contexts just to look for cache entries

Cache opportunities were being missed because of skipping read-only functions. This reduces the xmlstar runtime from 11:00 to 7:30
Use outerScope (natural scope adjusted for ignore-loops) to determine when to enter a child loop, not scope (outermost scope at which a block can be killed)
Enhance GlobalDCE to spot the no-unresolved-calls situation that results from specialising xmlstart.

Also:

1. add xml specialisation scripts
2. Fix a bug in the forward graphwalk when dealing with exit blocks in residual loop context
3. Don't rerun DSE when you don't really need to