A `ProbabilisticModel` is a mapping from a feature domain to a probability distribution over
  a target domain.
  
  @features The shape of the feature domain.
  @targets The shape of the target domain.
  @marginal The type of mulitvariate marginal distribution over the target domain.
  Parameters: features, targets, marginal, model
Constraints: Distribution marginal
Methods:
  - marginalise : model -> Tensor (S n :: features) F64 -> Tag (marginal targets (S n))
-   Return the marginal distribution over the target domain at the specified feature values.