Adding `one` for structured matrices that preserves type (#29777)
* added one for structured types. not very elegant
* fix diagonal fill
* adding tests and making the container types stay the same (except for ranges)
* removing small enough to put into separate PR
* fixing the case of types with dimension and adding tests
* missed merge conflict in the test file
* fixing error in test