Describe the feature / issue
Currently, the Species class does not have a copy constructor. This becomes a problem when creating a Species node, as it's not possible to create the species and then pass it into the new node (and we therefore use a std::shared_ptr). Adding a copy constructor removes the indirection.