filediff: Actually clean up our temporary buffer markers
filediff: Work around an inline highlighting issue using cached results

This is extremely weird, and I can't figure out what's going on. If the
tags are applied in an idle handler, then we're fine. If they're
applied directly then they don't show up. The inner logic of the
apply_highlighting() callback looks to be identical in all cases, but
obviously something is awry.