Fix a bug causing LOG is not created when max_log_file_size is set.

Summary:
Fix a bug causing LOG is not created when max_log_file_size is set.
This bug is reported in issue #174.

Test Plan:
Add TEST(AutoRollLoggerTest, LogFileExistence).
make auto_roll_logger_test
./auto_roll_logger_test

Reviewers: haobo, sdong, ljin, igor, igor2

Reviewed By: igor2

Subscribers: dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D19053
Refactor: group metadata needed to open an SST file to a separate copyable struct

Summary:
We added multiple fields to FileMetaData recently and are planning to add more.
This refactoring separate the minimum information for accessing the file. This object is copyable (FileMetaData is not copyable since the ref counter). I hope this refactoring can enable further improvements:

(1) use it to design a more efficient data structure to speed up read queries.
(2) in the future, when we add information of storage level, we can easily do the encoding, instead of enlarge this structure, which might expand memory work set for file meta data.

The definition is same as current EncodedFileMetaData used in two level iterator, so now the logic in two level iterator is easier to understand.

Test Plan: make all check

Reviewers: haobo, igor, ljin

Reviewed By: ljin

Subscribers: leveldb, dhruba, yhchiang

Differential Revision: https://reviews.facebook.net/D18933
Include max_write_buffer_number >= 2 to SanitizeOptions.

Summary: Include max_write_buffer_number >= 2 to SanitizeOptions.

Test Plan: make all check

Reviewers: haobo, sdong, igor, ljin

Reviewed By: ljin

Subscribers: leveldb

Differential Revision: https://reviews.facebook.net/D19077
Merge pull request #176 from bgrainger/mutexrw-unlock

Add separate Read/WriteUnlock methods in MutexRW.
Add a table factory that can read DB with both of PlainTable and BlockBasedTable in it

Summary: The new table factory is used if users want to convert a DB from one table format to the other. A user can use this table to open a DB written using one table format and write new files to another table format.

Test Plan: add a unit test

Reviewers: haobo, igor

Reviewed By: igor

Subscribers: dhruba, ljin, yhchiang, leveldb

Differential Revision: https://reviews.facebook.net/D19017
specify the command to install build_tools/mac-install-gflags.sh file in doc
Merge pull request #177 from nanwu/master

specify the command to install build_tools/mac-install-gflags.sh file in...
Hide __attribute__ from unsupported compilers.
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