single-login-only, dtor dependency logic

Added database table to maintain logged in accounts with a constraint
preventing multiple login attempts.  Account object utilizes this table
to fail on construction if a login attempt is duplicate (violates the
constraint).

Noticed issues with destruction order and added appropriate login to
session dtor to clean up objects before eliminating the registry (that
those objects depend on).

Also added session.clear_rooted_objects() which is a predestructor used
by the context manager to eliminate session's managed objects before the
context manager eliminating the root object tied to the session.

dtor order needs to be: non-root objects, then root object, then session

Also became important due to the fact that the listener thread creating
the session and thread running the session are not the same thread.  The
listener thread would start shutting down sessions to execute a server
shutdown but this left sessions (and thus registries) getting deleted
before the objects depending on them.  Session dtor explicitly removes
stuff in the right order now to avoid the problem (as well as context
manager's call to session's pre-destructor).