already existing commit
IsDir2().
Fixed documentation, added TODO.
Constify.
Promise constification.
Changed "BAD:" to "BAD: "...

...makes it a bit harder to hit this message in random data and does not
break anything.

Also barely touched, and commented on newly introduced threading
issues. At some point the global connection cache was changed to a
different data structure, and concurrency issues were introduced: With
the old one (RList) we inserted new elements just by pointing them to
the existing list, so the existing list was never touched. Now with Seq
the list is in danger of being modified while being accessed. We must
revisit our global connection cache.
Made a couple of regexes more readable, without octal codes.
Some server access_rules attributes were missing in the RemoteAccess enum.

Changed declaration of some global syntax arrays to include their
size. In the future all should be declared with size, where size is
(MAX_ENUM_VALUE + 1), so that these bugs are warned by the compiler.
Close socket.
This is not a list-head but a list-tail.
Remove legacy stuff from new protocol's main loop.
Introduce realpath() alternative for windows.

Define PATH_MAX using windows' _MAX_PATH if available. Comment a bit
about the awfulness of realpath().
Added admitkeys, denykeys server access_rules attributes.
Various changes in access_rules building in cf-serverd

Change DeleteAuthList() to be non-recursive, also add asserts to verify
list's consistency before freeing.

In Auth type, rename "accesslist" to "accessIPs" and add "accessIDs"
which will contain the new key-based access controls. Add this new field
to Summarize().

Consolidated repeated Auth list building code into a couple of
functions: GetOrCreateAuth() and AddAccessConstraintsToAuth().
almost there WARNING DOES NOT COMPILE
whatever
strlist bugfixes and tests.
Enable source file to be a relative path in files copy_from promises.
Multi-tenancy works. TODO backwards compatibility, mostly 'admit' parsing.