plugins: Add .cache callback
Make it possible for plugins to advertise caching support, and to
implement their own caching algorithm.
There are no universally common cache algorithms (calling .pread and
ignoring the buffer works great for local files, but actually
penalizes remote network access), so the code intentionally defaults
.can_cache to NONE if .cache is missing. However, as both .pread
(files) and a silent no-op (for plugins serving data that only resides
in memory already) are common implementations, we allow .can_cache to
return success even when .cache is missing (which is different from
many of the other callbacks, where .can_FOO should not return true
unless .FOO is present). On the other hand, if only .cache is present,
defaulting .can_cache to NATIVE makes sense. Thus, .can_cache is a
tri-state similar to .can_fua.
Signed-off-by: Eric Blake <eblake@redhat.com>