Calculating phases is O(len(changelog)) since it scans revisions starting
with min(draft()) (unfiltered). Use the childmap so it is actually
O(len(not public())).
This saves 100+ms for a fbsource repo created in late 2015.
Besides, the old phases code build a O(len(changelog)) Python list for
rev -> phase queries. This patch does not build such list and saves
O(len(changelog)) memory.