use PTREE_PEEK_CONV instead of PTREE_CONV

since we know it's an application of PEEK
use alists instead of Redblackmaps

because there are < 15 keys, lists are probably faster
memoise ptree lookups in good_label_map_conv

this is the key thing that the finite maps approach has that I forgot
about for the ptree approach. adding memoisation speeds things up a lot!