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 at the AbstractArrayInterface level.