PPX deriving Tpf

This is a Ppx_deriving plugin, deriving Tpf data[n] generic representations.

If the type is called t, derived representation is called data. Otherwise, it is called data_TYPENAME.

For example:

type 'a t =
  | K1 of int
  | K2 of 'a
  [@@deriving tpf]

type ('a, 'b) tree =
  | Leaf of 'a
  | Node of ('a, 'b) tree * 'b * ('a, 'b) tree
  [@@deriving tpf]

yields

val data : (int, 'a, 'a t) Tpf.data2
val data_tree : ('a, 'b, ('a, 'b) tree) Tpf.data2