add user-defined load/unload hook support

This commit enables the ability to create user-defined hooks as part of
the normal code patch that can do preparatory work for the application
of the patch.  This work could include, but is not limited to, changing
data structure semantics.

The user may define a new function as part of the patch and mark it as a
load-time or unload-time hook with the kpatch_load_hook() and
kpatch_unload_hook() macros.  These macros are in an include file that
gets copied into the source tree at include/linux/kpatch-hooks.h at
patch build time. The signature for both hooks is "int kpatch_hook(void)".

For now, the return code is ignored.  The hooks may not fail.  They also
run in stop_machine() context and may not sleep.  These hooks, more or
less, must follow all the rules of interrupt context code.
I think this assumes that kpatch-hooks.h is always in the same directory as kpatch-build, which I think isn't the case for when installed with "make install", right?

Also, instead of copying to SRCDIR I think it would be less hacky if we just stored it in kmod/patch/ and then just added $TEMPDIR/patch to the include path with the -I option passed in KCFLAGS.

Also we may want to name the file something a little more generic since it will be used for other macros as well.  kpatch-macros.h?