Fermions improvements
Created by: jwnys
Improved version of the FermionOperator2nd. Improvements:
- diagonal terms are handled as such and no longer generate separate connected elements
- better handling of dtypes (bug fix)
- more tests
In comparison #1277 focuses on the off diagonal terms, but is less reliable to be generalizable.