api: added scatter/gather APIs

This adds writev()-like APIs e.g:
    eblob_writev() and eblob_plain_writev()

Those operate on eblob_iovec structures which looks like:
    /* Extended iovec-like structure */
    struct eblob_iovec {
           void                            *base;
           uint64_t                        size;
           uint64_t                        offset;
    };
blob: removed types

NB! This is non-backward compatible change which breaks both API and
API, most programs using libeblob need to be rewritten.
blob: removed support for compression

This is non-backwards compatible change:
All reads to compressed data will return -ENOTSUP
All writes with BLOB_DISK_CTL_COMPRESS flag set will return -ENOTSUP
tests: stress: simplify retry logic
mobjects: lock backend during eblob_remove_blobs()
tests: stress: test three read paths
tests: stress: test three stage write
blob: replace linux-only EBADFD with EILSEQ
blob: added __attribute_always_inline__ helper
blob: renamed eblob_update_index() to eblob_commit_disk()

Now it's consistient with eblob_commit_ram()
blob: always update data and index file simultaneously.

This fixes bug when datafile index is not updated during overwrite.

Also removed cfg.bsize handling for now.
hash: simplified hash lookups

Now that we have only one rctl per hash we can greatly simplify hash.

Also while here speedup l2hash: do not look in hash in case l2hash
lookup failed.
And fix stats in case of errors: update hashed only if err == 0
blob: copy record only if it's really needed

We can enchance 'contiguousness' test by sorting iovs, merge adj. and
splice overlapping.
blob: less extensive logging
misc: define offsetof only if it's not defined
blob: replaced __eblob_unused with __attribute_unused__
data-sort: speedup notes
blob: use memcmp in eblob_id_cmp()

On lucid there is 10x boost on using non-gcc's memcmp:
$ gcc -O3 -o test test.c && ./test
Time: 245 ticks (4279 memcmp/tick)
$ gcc -O3 -fno-builtin-memcmp -o test test.c && ./test
Time: 22 ticks (47662 memcmp/tick)

test.c can be found here http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
tests: stress: remove obsolete usleep()
api: simplified prepare/plain/commit

Do not accept write_control only extract few fields from it.
This greatly simplifies API but this is non-backward compatible change.

Also in future releases we can add special *_return conterparts to
speedup common work flows.

Also plain write does not commit changes on each write.