RFC: another interface refactoring

This is a proposal for how we can refactor the interfaces.  It doesn't
compile, so it's probably best not to merge it ;-)

The recent module patching code has exposed some problems with our data
structures.  We currently patch the funcs and dynrelas individually,
which is kind of scary now that different objects can be patched at
different times.  Instead I think it would be much cleaner to group them
by patched object.  Here's a proposal for new interfaces which would
make it a lot easier to do so.

- Completely separate the create-diff-object <-> patch module interface
  from the patch module <-> core module interface.  create-diff-object
  will include "kpatch-patch.h" but not "kpatch.h".  Thus,
  create-diff-object has no knowledge about the core module's
  interfaces, and the core module has no knowledge about the patch
  module's special sections.

- kpatch-patch.h defines the format of the patch module special
  sections.  It's used by create-diff-object to create the special
  sections and used by the patch module to read them.

- kpatch.h still defines the core module interfaces.  Each kpatch_module
  has a list of kpatch_objects for each module object to be patched.
  Each kpatch_object has a list of kpatch_funcs and a list of
  kpatch_dynrelas.  The patch module creates these lists when populating
  kpatch_module.  This way of structuring the data allows us to patch
  funcs and dynrelas on a per patched object basis.