Minor updates to Lazy values. Converted some do-while loops to recursive
functions.
Fixes issue #135, #130, #127
Merge remote-tracking branch 'upstream/DEV2.2' into DEV2.2
Merge pull request #146 from bruttenberg/DEV2.2

Dev2.2 Merge
Fix for issue #142

BP now uses division to send messages to neighbors. This required
several changes outside of BP:

1. There is a new Semiring trait call DivideableSemiRing that defines
semirings with a division operator. This is required since Boolean
semirings cannot do divide. All double semirings have a division
function defined, where divide by zero always produces zero.
2. In Factor, there is a new function called combination, which combines
two factors according to a combination function. The product function i
n factor now just calls this function with semiring.product. In BP, it
calls combination with a division function.

This also fixed several failing tests due the reverting the combine
factors operation.
Merge pull request #149 from bruttenberg/DEV2.2

Fix for issue #142
Correct FactorTest
 deduplication test needed to check for order
Change to matchers due deprecation warning
Added evidence computation to BP.

Note that this does not implement the ProbEvidenceAlgorithm interface
yet. Some more work is needed to enable this. Currently you can get the
prob evidence from BP after running the algorithm and called
computeEvidence
Update .gitignore
Remove .metadata directory
Merge pull request #152 from bruttenberg/DEV2.2

Added evidence computation to BP.
particle filter prob evidence
Merge pull request #151 from gtakata/DEV2.2

Correct FactorTest
particle filter log space #137
#147

Use logarithms to compute probability of evidence
#131

Use approximate method to compute binomial density for large number of
trials
Revert "#131"

This reverts commit e872fa15ab4f80155c344af40b0591058542a5a7.
Merge pull request #161 from mhoward2718/DEV2.2

#147
#131

Use approximate density method for large number of binomial trials