fix wrong test case
add text message equals test
only flushCache when unsaved queue is not empty
add getDataStore interface to UnsavedMessageQueue
add fuzzyDateSame test
fix UnsavedMessageQueue logic bug: save to datastore should always
happen in one thread