Boost 1.39 or later required.

This allows one to use make_shared to create shared_ptr instances.
Unfortunately, the C++03 version only allows a maximum of 9 constructor
arguments, so we won't be able to use it everywhere.

(Also, let's use make_shared in new code, and by all means use it to
replace explicit new when you come across it, but I wouldn't go and
hunt for all allocations. A quick grep call gives more than 1000 hits,
and the time to change them all is better spent for something else.)
Merge remote-tracking branch: upstream/master