The following code implements inline tracing for the kinst DTrace provider.
Briefly explained, what the code does is, for each probe of the form:
```
kinst::<inline_func>:<entry/return>
```
libdtrace checks to see if `<inline_func>` is indeed an inline function, where
in this case it finds all inline copies of it and creates new probes for each
one of them. Otherwise, it converts the probe to an FBT one so that we don't
duplicate FBT's functionality in kinst.
Notes:
Unlike FBT, leaving the probe name empty won't trace both `entry` and `return`.
kinst goes into "inline-tracing mode" only when it sees `entry`/`return` in the
probe name, otherwise it thinks it's a regular kinst probe, in which case the
dtrace(1) invocation will fail if we try to trace an inline function with an
empty probe name.