leveldb: Introduce concurrent read benchmark
table: Recycle block buffer to reduce heap allocations #62

$ benchcmp old.txt new.txt
benchmark                       old ns/op     new ns/op     delta
BenchmarkDBRead                 494           432           -12.55%
BenchmarkDBReadConcurrent       135           121           -10.37%
BenchmarkDBReadConcurrent2      336           290           -13.69%
BenchmarkDBReadGC               658           420           -36.17%
BenchmarkDBReadUncompressed     417           365           -12.47%
BenchmarkDBReadTable            488           431           -11.68%
BenchmarkDBReadReverse          569           526           -7.56%
BenchmarkDBReadReverseTable     594           506           -14.81%
BenchmarkDBGet                  4957          5124          +3.37%
BenchmarkDBGetRandom            17436         11537         -33.83%

benchmark                       old MB/s     new MB/s     speedup
BenchmarkDBRead                 234.65       268.00       1.14x
BenchmarkDBReadConcurrent       855.75       955.83       1.12x
BenchmarkDBReadConcurrent2      344.66       399.74       1.16x
BenchmarkDBReadGC               176.20       275.82       1.57x
BenchmarkDBReadUncompressed     277.94       317.06       1.14x
BenchmarkDBReadTable            237.64       269.07       1.13x
BenchmarkDBReadReverse          203.52       220.22       1.08x
BenchmarkDBReadReverseTable     195.13       228.87       1.17x

benchmark                       old allocs     new allocs     delta
BenchmarkDBRead                 0              0              +0.00%
BenchmarkDBReadConcurrent       0              0              +0.00%
BenchmarkDBReadConcurrent2      0              0              +0.00%
BenchmarkDBReadGC               0              0              +0.00%
BenchmarkDBReadUncompressed     0              0              +0.00%
BenchmarkDBReadTable            0              0              +0.00%
BenchmarkDBReadReverse          0              0              +0.00%
BenchmarkDBReadReverseTable     0              0              +0.00%
BenchmarkDBGet                  16             17             +6.25%
BenchmarkDBGetRandom            20             22             +10.00%

benchmark                       old bytes     new bytes     delta
BenchmarkDBRead                 205           27            -86.83%
BenchmarkDBReadConcurrent       40            12            -70.00%
BenchmarkDBReadConcurrent2      193           43            -77.72%
BenchmarkDBReadGC               202           27            -86.63%
BenchmarkDBReadUncompressed     145           22            -84.83%
BenchmarkDBReadTable            207           27            -86.96%
BenchmarkDBReadReverse          260           82            -68.46%
BenchmarkDBReadReverseTable     262           82            -68.70%
BenchmarkDBGet                  963           908           -5.71%
BenchmarkDBGetRandom            6697          1124          -83.22%