This function ensures that data follows the required nested structure
data[[tip]][[structure]], where:
data is a list of at least two tip elements.
Each tip is a list of structure elements.
Each structure contains a numeric vector of equal length across all tips.
validate_dataAcrossTips(data)A list structured as data[[tip]][[structure]].
Throws errors if:
data is not a list.
It has fewer than two tips.
Any tip is not a list.
The number of structures is inconsistent across tips.
Any structure has zero-length data at any tip.
Structures have different site lengths across tips.