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.
The above two lines can be put in this line only. And there's no need to compare len of intersection to 0. Empty set automatically means False. So you could have done `if set_var2 - set_var1:`.