Some things I don't understand: 1. Why does `arraydist` exist? 2. Why is `arraydist` in this package? It seemingly has nothing to do with autodiff. 3. When should I use `arraydist` rather than `product_distribution`? 4. Why is `filldist` in this package? It also seemingly has nothing to do with autodiff.