new .fixup group size algorithm

The fixup_group_size() function assumes that all .fixup rela groups end
with a jmpq instruction.  That assumption turns out to be false when you
take into account the ____kvm_handle_fault_on_reboot() macro which is
used by kvm.

I came up with a new, more reliable method.  It turns out that each
.fixup group is referenced by the __ex_table section.  The new algorithm
goes through the __ex_table relas to find the beginning of each .fixup
group.

Also the .fixup section is now processed before __ex_table, because it
needs to access the original __ex_table relas before the unused ones
have been stripped.

Fixes the following error:

  ERROR: vmx.o: fixup_group_size: 1554: can't find jump instruction in .fixup section
kpatch-gcc: properly quote arguments

Fixes an error when the following is an argument to gcc:

'-DIPATH_IDSTR="QLogic' kernel.org 'driver"'

gcc: error: kernel.org: No such file or directory
gcc: error: driver": No such file or directory
kpatch-build: add more ancestors for vmlinux

There are a few more valid ancestors for vmlinux other than built-in.o.
This fixes errors similar to the following:

    ERROR: invalid ancestor arch/x86/lib/lib.a for arch/x86/lib/usercopy_64.o
kpatch-build: deep find performance improvement

If we have to do a deep find (e.g. search the entire tree) to find a
parent object, first try searching in the last successful deep find
directory.  This is a performance improvement in the case of a full tree
rebuild, because deep finds are very expensive, and it's not uncommon
for there to be multiple objects in a directory being linked into an
object in another directory.
skip vdso files

vdso files aren't kpatch-compatible, and give errors like the following:

    ERROR: invalid ancestor arch/x86/vdso/vdso32-sysenter.so.dbg for arch/x86/vdso/vdso32/sysenter.o
allow two parent matches unless the object changes

With some obscure drivers, the same object file can be linked into
multiple parent objects.  Only call this out as an error if the object
has changed, otherwise it doesn't matter.

Fixes the following issue:

    ERROR: two parent matches for drivers/media/radio/si470x/radio-si470x-common.o.
test: add slow test for rebuilding entire tree

Only gets run with the slow integration tests, not "make quick".