Don't throw exceptions in file operations just to ignore them.

Use overloads of boost::filesystem functions taking a boost::system::error_code
to avoid throwing exceptions which are simply immediately ignored.

While this is also more efficient, the main rationale for this change is to
avoid dozens if not hundreds of exceptions which can be thrown when updating
the cached index and spam the debugger console.

There should be no changes in behaviour.