Linux 3.12 compat: New shrinker API

torvalds/linux@24f7c6b981fb70084757382da464ea85d72af300 introduced a new
shrinker API while
torvalds/linux@a0b02131c5fcd8545b867db72224b3659e813f10 dropped support
for the old shrinker API. This patch adds support for the new shrinker
API by wrapping the old one with the new one.

It also reorganizes the autotools checks on the shrinker API such that
the configure script will fail early if an unknown API is encountered in
the future.

Build tests were done against Linux 2.6.26.8, Linux 3.11.6 and Linux
3.12.0. Other kernels between 2.6.26 and Linux 3.12 are expected to work
as well.

Signed-off-by: Richard Yao <ryao@gentoo.org>