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 was pretty sure that SHRINK_STOP was added in the new shrinker API, but I was considering the perspective of someone examining the code without that prior knowledge.  I'm more accustomed to seeing this idiom:
```
#ifndef SOMETHING
#define SOMETHING ...
#endif
```
For example, in ```sysmacros.h```, we see:
```
#ifndef howmany
#define howmany(x, y)           (((x) + ((y) - 1)) / (y))
#endif
```
as opposed to "#ifndef something_else_not_necessarily_directly_tied_to_howmany".

To me, as a code reviewer, that idiom implies the preprocessor token is defined in some versions of the surrounding environment but not in others and that in environment where it's not implicitly defined, we want to give it our own particular definition.

That said, I've got no strong feelings on this type of idiom one way or another and it is certainly more consistent with the rest of the code (in spl-kmem.c) to use ```#if !defined(HAVE_SPLIT_SHRINKER_CALLBACK)```.

[Sorry for the too-long comment for something which was an off-the-cuff thought earlier today.]