A node without a DirstateMap entry represents a directory.
Only some values of EntryState represent tracked files.
A directory is considered "tracked" if it contains any descendant file that
is tracked. To avoid a sub-tree traversal in has_tracked_dir we add a
counter for this. A boolean flag would become insufficent when we implement
remove_file and drop_file.
add_file_node is more general than needed here, in anticipation of adding
the add_file and remove_file methods.
Not always true: a file that used to be a directory with one or more children that have all been marked as removed will have children.