Improve the robustnesss of PartialCompactionFailure test.

Summary:
Improve the robustness of PartialCompactionFailure test.

Test Plan:
./db_test
Improve the robustness of PartialCompactionFailure test again.

Summary:
Improve the robustness of PartialCompactionFailure test again.

Test Plan:
./db_test
TableMock + framework for mock classes

Summary:
This diff replaces BlockBasedTable in flush_job_test with TableMock, making it depend on less things and making it closer to an unit test than integration test.

It also introduces a framework to compile mock classes -- Any file named *mock.cc will not be compiled into the build. It will only get compiled into the tests. What way we can mock out most other classes, Version, VersionSet, DBImpl, etc.

Test Plan: flush_job_test

Reviewers: ljin, rven, yhchiang, sdong

Reviewed By: sdong

Subscribers: dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D27681
Include all the mocks
Include atomic in mock_table.h