extract duplicated findText method
add `collect` method to simplify parsing

in many case we can find name, status pairs using a single select
expression, and extract the name and status from the selected node

collect makes this process easier by allowing us to specify how to
extract the name and status
rewrite parsing using new domutil
rewrite tweet entity parsing to reduce code duplication
Merge remote-tracking branch 'origin/duplicated-code-removal'