use offsetof to calculate the pointer to the struct

If the compiler inserts padding before the "buf" member of struct sds,
then "offsetof" is the correct way to calculate the beginning of the
struct.  The C standard specifies/specified that any padding be inserted
*after* the flexible array member, but most compilers don't do that.
There is a DR here: http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n983.htm

Also see http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n987.htm
Merge branch 'use_offsetof' of https://github.com/gandalf013/sds

This also applies the suggest change from

  https://github.com/antirez/sds/pull/9#commitcomment-5316709

Conflicts:
	sds.c
	sds.h