Reworked blom filter and index blocks. Optimized defragmentation. New C++ API.

* Bloom filter now has clean API. Uses 2 hash functions and instead of one bloom per index block it uses one bloom per base. This reduces memory consumption and fragmentation. Also greatly speedups operations on blobs with many bases(data files).
* Index blocks are allocated in one continuous region of memory, reducing malloc overhead and memory fragmentation. Also speeds up start time.
* Skip sort step of defragmentation for already sorted bases. This reduces IO pressure on systems running defragmentation for two or more times.
* Added ability to read data with out checksum via C++ API.