insn: import insn disassembler code from kernel

We need a disassembler library to help with converting data section
relocation references to their corresponding symbols.  Unfortunately,
the only library I could find that's widely available in enterprise
Linux distros was libopcodes, which is part of binutils.  But its
interface is far too clunky for our needs.

The best alternative I can find is to just copy the kernel's
disassembler library code from arch/x86/lib.
insn: get it to compile in create-diff-object
create-diff-object: fix section to symbol conversion

For a rela with type X86_64_PC32, the addend of the needed symbol is
relative to the address of the instruction _after_ the one which is the
target of the relocation.
create-diff-object: support .data..read_mostly and .data.unlikely

Support patching functions which uses these sections by converting
references to these sections to symbol object references.

Fixes #219.
create-diff-object: improved error message
create-diff-object: tracepoint & jump label fixes

The current approach of trying to include the tracepoint-related
sections doesn't work at all.  The new tracepoints don't show up in
"perf list".

And also, with one patch (issue #219) I've seen a panic in
jump_label_del_module().  I suspect it's because the kernel is confused
by dynamic relocations' changing of the jump table after it was
registered with the jump table code.

I think the best approach for now is to just always exclude these
sections.  It should be harmless, with the only consequence being that
tracepoints and jump labels can't be enabled in patched functions (which
is already the case with the current code anyway).

Fixes #221.