Change API of attach_kprobe to take a name argument

Per feedback on the attach_kprobe api, change up the arguments to remove
the load_func that typically preceeds the call. Instead, move this
inside the attach_kprobe implementation. Also, this makes attach_kprobe
need to be non-static. The same applies to attach_kretprobe.

Old:
fn = b.load_func("hello", BPF.KPROBE)
BPF.attach_kprobe(fn, "sys_clone")

New:
b.attach_kprobe(event="sys_clone", fn_name="hello")

Note that the kwarg style is not required, but I fixed up the current
usages to provide readability.

Signed-off-by: Brenden Blanco <bblanco@plumgrid.com>
diff --git a/examples/disksnoop.py b/examples/disksnoop.py
index c9f4fb0..3dede56 100755
--- a/examples/disksnoop.py
+++ b/examples/disksnoop.py
@@ -18,8 +18,8 @@
 
 # load BPF program
 b = BPF(src_file="disksnoop.c")
-BPF.attach_kprobe(b.load_func("do_request", BPF.KPROBE), "blk_start_request")
-BPF.attach_kprobe(b.load_func("do_completion", BPF.KPROBE), "blk_update_request")
+b.attach_kprobe(event="blk_start_request", fn_name="do_request")
+b.attach_kprobe(event="blk_update_request", fn_name="do_completion")
 
 # header
 print("%-18s %-2s %-7s %8s" % ("TIME(s)", "T", "BYTES", "LAT(ms)"))