Forward Automatic Differentiation via overloading to perform
nonstandard interpretation that replaces original numeric type with
corresponding generalized dual number type.
Existential type "branding" is used to prevent perturbation confusion.
**Note: In general we recommend using the ad package maintained by
Edward Kmett instead of this package.**