Better memory management of the frame iterator

complicated because
1) the libunwind structures have internal pointers to each other, which
   necessitates passing these around by pointer/reference, and
2) we want to use these in C++11 range for loops which have a specific API

there might be an easier solution though now that we're not using
llvm::iterator_range
Minor