prof: fixes backtrace

And cleans up a bit.  Two main things:
- The BT was jumping back too far
- We were writing out the full BT depth, even if the BT slots were
  empty.  They happened to be 0 for now, since the memory was fresh,
  but would be gibberish later.  They also took up extra space.
Helpers for extracting PC/FP from hwtfs

This might not work, depending on how RISCV works.  In which case, we'll
need to adjust our BT functions.
prof: backtrace the interrupted context

Just calling backtrace on the current context just gave us the IRQ's BT,
which is just handle_irq, timer_interrupt, etc.  We actually want the
context that we interrupted, such as the kernel executing a syscall or
userspace.
prof: samples userspace PCs
Removes tests/prof_test.c