Utils: Optimized data_pointer behaviour

Replaced shared_ptr usage by storing std::atomic as data prefix.
It makes possible to minimize memory allocations and speed up the
software. Also it allocates zero memory in the heap by ::from_raw
method, which is infinitive times better than previous implementation.