FIle/FileUtils refactoring

* Add CFile::LoadFile function
* Move code logic from FileUtils::LoadFile to CFile::LoadFile
* Implement class CSmartBufferEx
* Replace ugly reference to pointer with reference to CSmartBufferEx for CFile::LoadFile

As result, you can
```` C++
CFile file;
CSmartBufferEx buffer;
file.LoadFile("Some/file.ext", buffer);
file.SomeOtherFunction();
````