ScopedPtr

Takes ownership over the given pointer and handles it's lifetime.