Switch over to shared_ptr based Box implementation

With this change, class instances that are derived from the ContainingBlock
class are managed by std::shared_ptr.

(ContainingBlock) : Extend from enable_shared_from_this and drop support for intrusive_ptr
(ContainingBlockPtr, BoxPtr, BlockPtr, LineBoxPtr, InlineBoxPtr, TableWrapperBoxPtr, CellBoxPtr) : Define as shared_ptr; all callers changed
(Box::isSane) : New
(Box::self, Block::self, LineBox::self, InlineBox::self) : New
(Box::parentBox, Box::containingBox) : Switch to weak_ptr<Box>
(LineBox::rightBox) : Switch to weak_ptr<Block>
(CSSStyleDeclarationImp::boxList) : Keep boxes using list<weak_ptr<Box>> to simplify the memory management
(CSSStyleDeclarationImp::addBox, CSSStyleDeclarationImp::removeBox, CSSStyleDeclarationImp::getBox, CSSStyleDeclarationImp::getLastBox, CSSStyleDeclarationImp::hasMultipleBoxes) : Refine
(StackingContext::baseList) : Keep base boxes using list<weak_ptr<Box>> to simplify the memory management; all callers changed
(TableWrapperBox::constructBlocks, TableWrapperBox::processCell) : Switch to make_shared from new
(ViewCSSImp::createBlock) : Switch to make_shared from new