Modify marginalizeTo to accept multiple targets
Add methods to remove duplicate variables
Modify marginalizeTo call to new signature
Alter marginalizeTo call to new signature
Add test for multiple marginalize targets
Add test for deDuplicating variables in Factor
Add no paramter deDuplicate
Merge pull request #122 from gtakata/DEV2.2

Dev2.2
Fixed BP underflow problem
Separate combineFactors into a separate function (no longer in
makeFactors(chain).

It needs to be invoked separately and can be applied to any list of
factors.
Revised tests to apply combineFactors as a separate function.
Reverted test due to removal of combineFactors.
Minor updates to Lazy values. Converted some do-while loops to recursive
functions.
Merge pull request #145 from gtakata/DEV2.2

Dev2.2
Merge pull request #144 from apfeffer/DEV2.2

Fixed BP underflow problem
Updates to SBT build file and .gitignore
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
Merge pull request #1 from p2t2/DEV2.2

Dev2.2