Smart pointers big modification

From this moment on, the kernel provides smart pointers to the user but stores and makes information transfer by using pointers. The code compile and run. Memory tests must be run yet.