tests: Moved API checks to external test file
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.
tests: set stdout to sys.stdout instead of PIPE

It makes better user experience as tests' progress is printing
in real time
tests: Add data_buffer test case
indexes: Removed raw_* structures

data_pointer is cool enough to fully replace them
Utils: Introduce argument_data

This class is introduced to replace data_pointer in cases of
function's arguments. It has "copy" constructors from std::string,
char *, char[] and data_pointer to make life easier.

On the other hand data_pointer's copy constructors were removed
to provide more logic behaviour.