HashLinkList to log distribution of number of entries aross buckets

Summary: Add two parameters of hash linked list to log distribution of number of entries across all buckets, and a sample row when there are too many entries in one single bucket.

Test Plan: Turn it on in plain_table_db_test and see the logs.

Reviewers: haobo, ljin

Reviewed By: ljin

Subscribers: leveldb, nkg-, dhruba, yhchiang

Differential Revision: https://reviews.facebook.net/D19095
Change order of parameters in adaptive table factory

Summary:
This is minor, but if we put the writing talbe factory as the third parameter, when we add a new table format, we'll have a situation:
1) block based factory
2) plain table factory
3) output factory
4) new format factory

I think it makes more sense to have output as the first parameter.

Also, fixed a NewAdaptiveTableFactory() call in unit test

Test Plan: unit test

Reviewers: sdong

Reviewed By: sdong

Subscribers: leveldb

Differential Revision: https://reviews.facebook.net/D19119
Specify alignment for Visual C++.
Remove unnecessary 'typename' keyword.

Visual C++ rejects this with:
  error C2899: typename cannot be used outside a template declaration
Use different maximum integer for Visual C++.

MSVC doesn't treat std::numeric_limits<T>:max() as a compile-time constant.
Move static variables into blocks.

Visual C++ rejects the previous code:
  error C2360: initialization of 'zlib_corrupt_msg' is skipped by 'case' label