Implemented factor_divide, changed the marginalize code to return the marginalized factor as a new object and not change the existing factor, changed the initialization of factor to work with empty factors, moved the insertion of factors's code from UndirectedGraph to junction tree
Added the code for finding the normalization constant using the junction tree and some test cases