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
I went back and forth on this.  Functionally it's not going to matter because SHRINK_STOP was added in the same commit the shrinker callbacks were split.  In then end I thought this would be a little more consistent.  Can you make a case for why `#if defined(SHRINK_STOP)` is better?