create-diff-object: fix .data..percpu references

The -fdata-sections gcc flag doesn't work with objects in the
.data..percpu section.  Any function which uses a percpu variable
references this section, causing the section to get incorrectly included
in the patch module.

Manually convert these section references to object symbol references so
that the needed symbol can be found in vmlinux.
create-diff-object: generic special section support

Abstract out the common functionality for dealing with special sections
into a new kpatch_regenerate_special_sections() function.

The base sections are copied whole.  That's much easier than trying to
filter them, and any unused data is harmless.

The rela sections are partitioned into "groups" of relas.  Only those
groups which reference a changed function are kept.  The only difference
in the logic for handling each special section is determining the number
of rela entries in a given group.  Each section has its own group_size()
callback for this.

I used a callback instead of an int because some of the
soon-to-be-supported special sections require that their groups' sizes
be dynamically determined.
create-diff-object: support fixup and related sections

Fixes #187.
create-diff-object: improve error message
create-diff-object: support tracepoints and related sections
create-diff-object: fix symbol section indexes

For a local non-included function or object which is needed by an
included function, its symbol table entry will still refer to a local
section index.  Instead it should be changed to SHN_UNDEF.
fixup
todo