Fix libpfm linkage.
Add arch() getter to Task.
Add RR_ARCH_FUNCTION to map from dynamic supported_arch to static template<typename Arch>.
Support gdb's |call foo()| by creating a throwaway session
("experiment") unconstrained by the trace.

This adds a new execution-control mode tentatively called
"experimenter".  The semantics of experiment mode are described in the
long comment at the top of experimenter.h.

When gdb begins a |call foo()| frame, it sends the READ_SIGINFO packet
from the remote protocol.  We use this as a signal to create a new
"experiment" and switch control to that mode.  gdb is then allowed to
set registers and write memory to the experiment session, which is
forbidden in normal replay sessions.  rr makes a best-effort to handle
syscalls during experiments, but can't fully, in general.  gdb finally
announces it might be done with the experiment by sending the
WRITE_SIGINFO packet, at which point rr prepares to destroy the
experiment session at the next resume-execution request.  (Successive
|call bar()| frames will re-use the same experiment.)