[functorch] DynamicLayer uses TransformType instead of DispatchKey to identify transforms (pytorch/functorch#748)
Previously, we relied on c10::DispatchKey as the identification for a
transform. This was a little weird, because the grad and jvp tranforms
both mapped to DispatchKey::Autograd, and the vmap transform has 2
different dispatchkeys (VmapMode, Batched).
This PR changes it so that there is a single TransformType enum that is
used to identify the transform.