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.
Since all the functions related to triangulation are functions of UndirectedGraphs (triangulating etc), hence it looks complete to have the is_triangulated also as a function of UndirectedGraphs (even though it might be just a wrapper function). Can I let it be? @ankurankan