Provide hook points to implement a MakeClicky cache.

MakeClicky is very expensive on long tickets, but no single part of it
is expensive.  Having to match against large blocks of text and dispatch
to linking code just adds up slowly on long tickets. This provides rope
so that a cache can be implemented.

This is being tested in RTIR using mason file caching, but could easily
have a plugin to enable it in core or to switch to using some other
caching mechanism.
Merge branch '4.0/makeclicky-cache' into 4.0-trunk