Handle unicode paths and existing tracks

Previously, update_library would crash when an existing track or a track with
a unicode path was encountered. Moving away from bulk session commits does
impact performance however, but this is better than aborting the whole update.