fix typo in test
use recursive algorithm in ExperimentSection.subsection
add ExperimentSection.local_levels property

--HG--
extra : amend_source : 027dc71f83a14571e32d9e626416626f0fed8090
dataframe docstring refers to descendants, not parents
test ExperimentSection.local_levels more directly
add Experiment.parent method
use generic depth- and breadth-first search methods wherever possible
add ExperimentSection.walk method
move parent and parents methods to ExperimentSection
refactor ExperimentSection.levels into a property so that it is properly dynamic
use walk to generate DataFrame