Add SafeCountable and safe_ptr classes
Add SafeCountable and safe_ptr classes

safe_ptr is a smart pointer which manage a safe count in pointed
objects. SafeCountable provides the interface needed for safe_ptr
and assert the safe count is zero in destructor.

This permits to have pointers that guarantees their pointed object is
alive.

casimir/kakoune,flavius/kakoune,Asenar/kakoune,casimir/kakoune,rstacruz/kakoune,lenormf/kakoune,rstacruz/kakoune,alpha123/kakoune,jjthrash/kakoune,alpha123/kakoune,alexherbo2/kakoune,Somasis/kakoune,danr/kakoune,elegios/kakoune,Somasis/kakoune,occivink/kakoune,danielma/kakoune,alexherbo2/kakoune,rstacruz/kakoune,xificurC/kakoune,Somasis/kakoune,Asenar/kakoune,danielma/kakoune,danr/kakoune,jkonecny12/kakoune,occivink/kakoune,zakgreant/kakoune,ekie/kakoune,lenormf/kakoune,zakgreant/kakoune,jjthrash/kakoune,casimir/kakoune,mawww/kakoune,xificurC/kakoune,zakgreant/kakoune,danielma/kakoune,jkonecny12/kakoune,ekie/kakoune,flavius/kakoune,alpha123/kakoune,mawww/kakoune,danielma/kakoune,Asenar/kakoune,danr/kakoune,elegios/kakoune,xificurC/kakoune,Somasis/kakoune,ekie/kakoune,xificurC/kakoune,jkonecny12/kakoune,elegios/kakoune,zakgreant/kakoune,jjthrash/kakoune,occivink/kakoune,lenormf/kakoune,jjthrash/kakoune,jkonecny12/kakoune,elegios/kakoune,alexherbo2/kakoune,flavius/kakoune,lenormf/kakoune,ekie/kakoune,occivink/kakoune,alexherbo2/kakoune,rstacruz/kakoune,Asenar/kakoune,flavius/kakoune,mawww/kakoune,mawww/kakoune,casimir/kakoune,danr/kakoune,alpha123/kakoune