BUG: Ensure arrays in linalg.outer
ENH: Implement Gate node

Gate is a deterministic node which gates a variable over one plate axis.
The gating can be non-constant by giving categorical variable as the
gating assignments, similarly as in Mixture node.
TST: Add unit tests for Gate node
TST: Add one more unit test for Gate node