Full symbolics to input conversion
In tket1, float variables are expressed through symbolics. In tket2, we'd interpret these as inputs to the computation, so ideally we would convert between symbolic abstract trees and tket2 native operations.
Current status: pure constants from tket1 are parsed and loaded as constants. Anything else is loaded as an opaque symbolic string. These operations can also be recovered when going in the other direction. Additionally, expressions added together using T2Op::AngleAdd are converted into strings with + symbols, so that in such cases tket2->tket1 conversions yield the expected results. See #166.
However, this means that the following tket2 circuit cannot be faithfully recovered after tket2->tket1 conversion:
graph TD
IN --> Rz
IN --> AngleAdd
IN --> AngleAdd --> Rz --> OUT
will be turned into
graph TD
IN --> Rz
C(const f0 + f1) --> Rz
Rz --> OUT