Refactor parse_gp_tree to return darray

Instead of returning a queue it returns a dynamic array structure, this
is so that one cause use it to quickly move to an index position to
perform crossover and mutations. A queue data structure is simply not
adequate for that type of operation.