Improve `v'v`/`dot(v, v)` implementation to make use of sparsity. Make use of `ArrayLayouts.DualLayout` when taking `adjoint` of `AbstractSparseVector`, define `Dot`/`dot` to handle inner products. Some of this could be handled in [DerivableInterfaces.jl](https://github.com/ITensor/DerivableInterfaces.jl) at the `AbstractArrayInterface` level.