added belief propagation, basic node scheduling
This revealed a bug with joint factor calculation, resulting in nested
arrays, due to the way scipy implicitly handled the broadcasting of
beliefs into joint beliefs. An explicit broadcast fixed the result.