neurondm LogicalPhenotype allow nesting
neurondm LogicalPhenotype allow nesting

turns out we do need to allow nesting of logical phenotypes because
there are use cases for things such as higher/lower where we need a
modifier on the phenotype, the semantics here are a bit fuzzy because
I have missused hasExpressionPhenotype in huang to refer to
higher/lower when the predicate should clearly be hasPhenotypeModifier
or something similar

the practical reason we need this is because if we were to try to
collapse (and gene-1 higher) with (and gene-2 lower) we would end up
with (and gene-1 gene-2 higher lower) which loses all information
about the pairing between phenotypes and modifiers

tgbugs/pyontutils,tgbugs/pyontutils,tgbugs/pyontutils,tgbugs/pyontutils