Move C++ impl. into cpp/
Add __unsafe_unretained for ARC support.

This should let ARC know I'm managing this on my own.
Add Obj-C wrapper.

Note: requires ARC.