This version was mostly more refactoring of attribute handling for performance. It also moved knowledge source / provenance handling inside of transform_attributes so that Plater or other applications could call transform_attributes on a node or edge and have it convert every attribute into TRAPI without needing additional manipulation.