Users no longer need to subclass stages. They are now just a container of TTask
Dynamically create the type hint necessary for the StageGraph instantiation and deserialization.Users will need less manual typing, but I still think this can be improved by not requiring users to input the types at all and instead inspecting the graph class
Union is now correctly annotated as a discriminated union (requires pydantic >=2.7)
Fixes #19