Support post-3.12 shrinker semantics

The new shrinker API as of Linux 3.12 modifies "struct shrinker" by
replacing the @shrink callback with the pair of @count_objects and
@scan_objects.  It also requires the return value of @count_objects to
return the number of objects actually freed whereas the previous @shrink
callback returned the number of remaining freeable objects.

This patch adds support for the new @scan_objects return value semantics.

References:
    https://github.com/torvalds/linux/commit/24f7c6b9
Enclose in ```#ifdef HAVE_SPLIT_SHRINKER_CALLBACK```.