Phoenix 180

First revision for review.  There are some open points here.  Still no test case added to consume the stats.  Will do the performance test once the system is available with me.
    Then an updateStats would just need to invalidate the cache entry for the table. Next time the table is accessed, the stats    table would be re-read.
    How about if we just read the stats anytime we re-load the PTable
So you mean when ever getTable() is called collect the udpateStats in a seperate thread.  If the stats was really changed then we would be returning the new stats that was updated (after invalidation). Or you mean that when ever we reload the table and populate the cache we do a scan of the STATS table and get the updated stats info in the main thread only.  The invalidation is done only when the schema changes or index is removed/added which also means there is no need for periodic scanning of stats table. Am i right here?