Create a temporary library file and rename it to reduce the chance of library corruption

Fixes #37
Fix the comment
Don't throw if we couldn't save the library
Rename "LibraryReader" to "LibraryDeserializer" and "LibraryWriter" to "LibrarySerializer"
Retry writing the library three times
Don't crash the application if the library couldn't be read

The Load method now tries three times before giving up and leaves the
library empty, if it fails the fourth time
Merge pull request #50 from flagbug/fix-library-corruption

Minimize the chance of a library corruption