Hold onto shots via a shared_ptr

Should make it easier to toss these things around safely, and reduce
dependencies.