cache FailoverTable in JSON, thread-safe pruneEntries()

FailoverTable isn't modified during normal run, but it is
saved to disk on every vbucket snapshot making the call toJSON()
very CPU intensive. caching the JSON version on change saves over
82% of CPU call made in snapshotVBuckets

Change-Id: I923180ab2bcd9cd5efe8d1e0ebf73aa6a6f1a9d3
Reviewed-on: http://review.couchbase.org/39645
Reviewed-by: abhinav dangeti <abhinav@couchbase.com>
Tested-by: Sundararaman Sridharan <sundar@couchbase.com>