Replaced GADataset with nested GAGroupCollection

GAGroupCollection is not tied to a specific type of metadata or an existing data type in SRA/ENA. It instead defines generic grouping. Depending on the collectionType field, a Collection object may represent a SRA run, a SRA experiment, a SRA study, a nested BioProject, or any arbitrary grouping fitting in a tree structure. It allows flexible and extensible hierarchy and opens the possibility to match the existing metadata at all levels.

In this commit, GAReadGroup and GAGroupCollection objects are organized in a tree structure, with an external node being a GAReadGroup object and an internal node being a GAGroupCollection object.