When a hash table becomes too heavily loaded, it needs to grow and rebucket everything. This is very expensive for large tables, as it completely trashes the cache. Rehashing everything isn't cheap either.
This patch makes it possible to reserve space in FoldingSet, much as one would do with a std::vector. New unit tests were also added.
The clang static analyzer will likely be the first client of this change. Reserving nodes up front yields a 6.4% analysis speedup on a large .C file.
Please, add a comment describing the capacity() API.