Changed from custom proxy type to Data.Proxy.

There's some question in my mind whether there is any advantage to having (for example, there are 6 places affected):

    (+) :: Proxy i -> Proxy i' -> Proxy (i + i'); (+) _ _ = Proxy

in place of

    (+) :: Proxy i -> Proxy i' -> Proxy (i + i'); (+) = undefined