Fix race condition when creating DAO objects

There is a race condition in SqlObject.buildSqlObject that can return an instance of the desired DAO associated with the wrong database handle.  This occurs only when there are multiple concurrent requests to create a DAO which has not previously been created.

This pull-request fixes the race condition and adds a test to verify the fix.