UserTag: Store saved scopes in external mapping to avoid circular refs.

Also moved the CompDefCacheEntry class out of the Frame/Tag classes to
avoid circularities originating from parent pointers.
Move the CacheTagEntry class out of the TagCache class.

To avoid circular refs due to parent pointers.
TagCache: Store individual entries in Roxen's cache.

This means we can avoid holding references to PCode objects through the
alternatives mapping, which helps break circularities. Also, the code
needed to store non-persistent entries from persistent frames in the
RAM cache could be removed thanks to the more generic cache handling.
TagCache: Fix bug that prevented persistent saving of alternatives.
PCode: Make sure to compile everything in PCode used by subevalers.

This helps breaking up cycles, resulting in less garbage.
1000 iterations doesn't seem to be enough when collecting PCode objects.
Schedule image cache cleanup around next 4:30 mark rather than next day.

This fixes an issue where the cleanup wouldn't run if a periodic restart
was performed every night, before the 4:30 mark.
Merge branch 'marty/rxml-garb-fixes-5.4' into 5.4

* marty/rxml-garb-fixes-5.4:
  1000 iterations doesn't seem to be enough when collecting PCode objects.
  PCode: Make sure to compile everything in PCode used by subevalers.
  TagCache: Fix bug that prevented persistent saving of alternatives.
  TagCache: Store individual entries in Roxen's cache.
  Move the CacheTagEntry class out of the TagCache class.
  UserTag: Store saved scopes in external mapping to avoid circular refs.
TagCache: More efficient RAM cache utilisation.

Alternatives entries are now stored in the cost-aware manager. Persistently
stored entries are restored with a flag to indicate that no cost calculation
should be performed, and they are subsequently removed when the frame is
destructed (if entries were stored persistently).
Merge branch 'marty/rxml-garb-fixes-5.4' into 5.4

* marty/rxml-garb-fixes-5.4:
  TagCache: More efficient RAM cache utilisation.
If-Range date comparison should use strict equivalence and not less than as
noted in the RFC 7233 clarification of HTTP 1.1 Range Requests.
Increase maximum URL length in <insert#cached-href> from 256 to 768 bytes.
Handle X-Forwarded-By and X-Forwarded-Proto in make_absolute_url(). Partially fixes [bug 7221].
Merge branch 'frigolit/bug7221' into 5.4
Dropped X-Forwarded-By for the more common X-Forwarded-Host. Updates [bug 7221].
Care about potential paths in id->url_base() as well. Updates [bug 7221].