Implement a platform-dependent conversion function that returns platform-independent boost::filesystem::path objects and use them.

This commit removes **ALL** the platform-specific filesystem handling of SMC
and collects it inside a single function utf8_to_path(). This function
can be implemented depending on the platform, as long as it returns
a valid boost::filesystem::path object. Working with Unicode filenames
works now on both Linux and Windows. This way this commit eliminates
the use of a MSVC-specific extension (std::ofstream constructor using
wide strings) which prevented SMC from being compiled with the MinGW
project’s g++ compiler. As the result, SMC is now fully standards-compliant,
and should compile with both MSVC and g++.

The Get_User_Directory() function does not yet return a boost::filesystem::path,
but this sould be adjustable in a later commit so all interaction with the
filesystem properly uses the platform-independent boost::filesystem::path objects.

Happy hacking :-)