Add ApproximateSize() method to Engine

Commit adds ApproximateSize() method on the Engine interface, designed to
utilize the GetApproximateSize() method of the rocksdb engine.

+ Implemented in both rocksdb and inMem Engine structs
+ Adds compression-aware test for the method.
"Error strings should not be capitalized (unless beginning with proper nouns or acronyms) or end with punctuation, since they are usually printed following other context. That is, use fmt.Errorf("something bad") not fmt.Errorf("Something bad"), so that log.Print("Reading %s: %v", filename, err) formats without a spurious capital letter mid-message. This does not apply to logging, which is implicitly line-oriented and not combined inside other messages. "
https://code.google.com/p/go-wiki/wiki/CodeReviewComments#Error_Strings
also line 580 and 574.