Get rid of Lifted typeclass by introducing Domain type family

hessianF previously only required Num a, but now requires Floating a
conjugateGradientDescent and conjugateGradientAscent previously only required Fractional a but now requires Floating a