When tree nodes are added as children of other nodes, store this information in the  attribute. This makes finding common ancestors and distances between taxa much faster. Rewriting relevant BaseTree functions for efficiency.
Removing property.setter decorator for compatibility with Python 2.5.
next() wasn't available in Python 2.5; use .next() method instead.
Moving `parent attribute to `_parent` to discourage direct manipulation, as this could break the new path/distance/mrca functions.
Adding `cache_labels` method for trees. When this is run, it creates a dictionary mapping node labels to tree nodes. After being run, all find_elements searches for named labels will be much faster.
Not really a cache so much as an index.
Merge branch 'cdao'