distribute the shardcache_client.h header
make the signature optional in the protocol definition
the signature is now optional, so pass NULL if no secret is provided
make the signature optional

if no shared secret is defined no singature will be applied/expected
the shared secret is now optional, so don't provide it by default
use spin locks instead of mutexes where it makes sense to

most of the locks used (which are anyway a few) have a very low retention time
and using spin locks is beneficial (especially when concurrency/parallelism is high)