Added a new `symmetric` backend. Current symmetries include U1 and Z2, but more will be added in the very near future.
* Added various classes for the symmetric backend including:
`BlockSparseTensor`, `ChargeArray`, `Index`, `U1Charge`, `Z2Charge`, and `BaseCharge`.
* Added `tn.replicate_nodes` as a cleaner API to `tn.copy()`