Add smart_ptr/intrusive_ptr

For citra-emu/citra#365