Add fact pruning messages when no candidate facts are available

The  changes add the underlying reasons for each fact, why it is not a candidate fact.

Here is a sample message :

org.apache.hadoop.hive.ql.parse.SemanticException: No candidate fact table available to answer the query, because {The fact summary1 has more weight.}{The fact summary2 has more weight.}{The fact testfact2_raw has more weight.}{The fact summary3 has more weight.}{}{The fact testfact2 has more weight.}{Non existing partitions for fact:testfact are :2014-05-19,2014-05-18-05,2014-05-18-06,2014-05-18-07,2014-05-18-08,2014-05-18-09,2014-05-18-10,2014-05-18-11,2014-05-18-12,2014-05-18-13,2014-05-18-14,2014-05-18-15,2014-05-18-16,2014-05-18-17,2014-05-18-18,2014-05-18-19,2014-05-18-20,2014-05-18-21,2014-05-18-22,2014-05-18-23,2014-05-20-00,2014-05-20-01,2014-05-20-02,2014-05-20-03,2014-05-20-04}

The current way of populating non existing partitions needs to change, since each fact can have different set of non existing partitions. Will update the pull request with those changes as well. 
Meanwhile @jdhok , can you please review current changes?