Attempt clean recovery from an unloaded PlayerProfile

This change should cause McMMOPlayer to create a graceful recovery when the database is temporarily unavailable.
When a McMMOPlayer is constructed and recieves an unloaded PlayerProfile, it schedules a task to re-attempt profile retrieval. This task can run for a maximum of 5 seconds, after which a second warning is printed indicating that it has given up (and a message given to the user).
Do not save an un-loaded PlayerProfile
Flatfile loadProfile - place newUser() inside of try block

This fixes incorrect behavior in the edge-case where an IOException occurs when reading (but not writing) the flatfile database.
SQL database - split loadProfile to have retry flag

Instead of assuming that newUser() worked as intended, we cycle back around into the method.
This also removes the possibility of infinite loops from the writeMissingRows() code path.