How are validators compiled to plutus core with template Haskell and the GHC plugin?