clean up the code by adding tag filtering to itercomponents and iterancestors, much like the other iter* methods from ElementTree