Reuse `cat` and `system` ID when expanding probes
Reuse `cat` and `system` ID when expanding probes

As `system` and `cat` work basically the same as `printf` we need to use
the same `id` reuse trick.

trigger:

```
tracepoint:syscalls:sys_enter_open,tracepoint:syscalls:sys_enter_openat
{
  if (str(args->filename) == "") {
    cat("");
  }
}
```

Results in:

```
terminate called after throwing an instance of 'std::out_of_range'
  what():  vector::_M_range_check: __n (which is 1) >= this->size() (which is 1)
Aborted
```

Closes #957

iovisor/bpftrace,iovisor/bpftrace,iovisor/bpftrace,iovisor/bpftrace