Work Till Week3

This pull request has the following things 
1. UndirectedGraphs - This has been extended from nx.Graph to include functionalities which will be used in both MarkovModel and JunctionTrees. Also graph algorithms which are not a part of MarkovModels belong here.
2. MarkovModels - The entire infrastructure of MarkovModels and a few algorithms.
3. JunctionTrees - This is a very new module and includes very few functionalities. This is being built up right now and will be developed more.

PEP has been followed fully. And I have written the test_cases for most of the functionalities included.
Please use meaningful variable names. `phi1_vars` would have been much better than `vars1`.