identify: build the tag list directly instead of using wctx.tags()
The current implementation of workingctx.tags() returns the tags of the parents.
This causes the calculation of {lastesttagdistance} from wdir() to be wrong.
The value when updated to a tag is 0, but updated to the tag's child is 2, the
child of that 3, and so on. This prepares for workingctx.tags() to not report
the parent tags.
basic test for hg debugrebuildstate
$ hg init repo
$ cd repo
$ touch foo bar
$ hg ci -Am 'add foo bar'
adding bar
adding foo
$ touch baz
$ hg add baz
$ hg rm bar
$ hg debugrebuildstate
state dump after
$ hg debugstate --nodates | sort
n 644 -1 set bar
n 644 -1 set foo
status
$ hg st -A
! bar
? baz
C foo
$ cd ..