refactor core <-> patch module interface

Right now, the internal per patch attributes are in kpatch.h,
which make them part of the public interface.  Internals should
be kept internal.

This commit replaces the previously "private" fields of the
struct kpatch_module with a single void *internals.  This
allows the kpatch core to define it's own internal structure
to tag on to each kpatch_module and change the definition of
that internal structure without having to modify the header.

This also refactors to avoid the copy of the kpatch_patch
data and change kpatch_func to simiply point to the patch
data (new/old addr/size) that was provided by the patch
module.

Sysfs registration of patch modules happens in the core now.

The "enabled" field is replaced with a callback to a patch-provided
"disable" handler.  This allows the patch module to maintain
its own state consistency, rather than having the core module
randomly change its state at any point.