Belief-update updates

* Use NVI pattern in belief update
* Change selection of belief update type to a compile-time operation because
  not all models will be compatible with all belief update types.