Fix parsing of subtreeRef elements within a subtree

### Notes ###
- updated <code>data_criteria</code>.<code>get_criteria()</code> to create and register data criteria if non-existent when referencing a nested subtree
- updated <code>data_criteria</code>.<code>dup()</code> to clone via Marshal unless an entry is supplied
- moved source data criteria generation code into document helper method
- cleaned up subtree parsing code, added helper method for converting to data criteria