Some housekeeping work to allow generating different code for the
less-restrictive userspace BPF interpreter vs. the more-restrictive
in-kernel BPF JIT interpreter.
* bpf-internal.h (enum bpf_target): New enum to track target BPF version.
(struct program::target): New field,
tracks the BPF version this program is intended for.
(struct program::program): Require target to be specified on creation.
* bpf-base.cxx (struct program::program): Initialize target field.
* bpf-translate.cxx (translate_bpf_pass): Specify targets of each program,
for now begin/end probes are being emitted for userspace BPF,
all other probes are being emitted for in-kernel BPF.
Down the line we may have a userspace timer probe (PR23477)..