update TODO
add delete message trigger delete flat_reference
sql rename
add randomIdBytesString
update reference message save test
rename test cases
finally support reference message load.

due to sqlite limit (select as dataset in union can not have limit or  order)
we can not simply record flat reference to others and then
use abstract_message.id_bytes union flat_reference.any_reference_id_bytes
to get all needed rows. so use a simple(but storage consumed) solution:
flat_reference record message self too (no matter it has reference)
. all needed id_bytes can obtained from flat_reference table .
except: only text message do this step,ref_count file share message always
without reference.
add reset_db.sql to reinit data (reserve db struct)
add TODO
refactor SQLiteDataStore to support lower level callback
add some comment
add main to SQLiteDataStore to print sql
use queryInternal to make code simple