Add support to track genealogies with samples from multiple time points
Previously, all sampled taxa in the tree had to be from the last generation. When studying viral evolution one often wants to sample over time. At each generation, a certain number randomly chosen nodes are marked as `sampled` and not pruned from the tree as evolution proceeds. the final tree will then contain these samples and store their sequences. This functionality was implemented a long time ago and was new resurrected.