correct IDataStore method define. now we load dependency when query
add missed parseTopics in ChatBuildMessage
some test cleanup
class rename
parseTopics never return null ,use EMPTY_SET instead
performance test refactor, use paged parameter
random ChatBuildMessage has random topics
improve test output
fix binary owner user "random_user"  value (false to 0)
use sqlite recursive to do tree topmost distinct , kick off lots unused code(note complete)
query by topic use fts table
better toString ,clean class member
refactor some test
more javadoc .allow setReferenceMessage accept null value
fix recursive query duplicate row leads reconstruct failed bug

must dedup the result set. since topMost row always appears first
we can simply check containsKey
fix wrong setReferenceMessage check
fix generate same message bug
UNION ALL faster a little than UNION in recursive (see sqlite3 CTE)
comment two test temp
fix a wrong test method