Use script core from Peer.

Peer already keeps track of the script core and exposes it via
GetScripting() so don't track it separately in the subclasses.
Add C++11 overloads for boost::get_pointer().

These overloads are included in Boost 1.53; we define them here to
support earlier versions of Boost.
Implement RequestShutdown().