support multi-threaded operation with sqlsf_init_key() and fixed get_sqlfs()

In multi-threaded operation, we don't get the sqlfs_t using sqlfs_open().
Instead, get_sqlfs() generates it and stores it based on when its needed.

Also convert all functions that receive the database key aka password
to expect a null-terminated string, and remove the nKey length args.
add new setup for running common tests in multi-threaded style with a key