Added categorical

- Uses vectors below the hood for index access
- The original motivation was to use categorical sampleFrom in mixtures
  - This would allow us to express mixtures of n > 2 kernels, targets, and proposals
  - This might not work with the current defn of categorical because of the Eq constraint