SLEEP writer pass

Files:
  inc/sleep_writer.h
  src/sleep_writer.c
  src/sleep_tree.c

Important change from the previous writer draft:
  SLEEP/Dat root sets for a feed of N blocks use fullRoots(2*N), not fullRoots(2*(N-1)).
  Thus N=83 produces roots 63, 143, 161, 164, matching the historical fixture's signatures.

The writer emits one signature for every feed length, 1..N.

The bitfield writer follows the documented 3328-byte SLEEP V2 layout. The historical fixture supplied with the project has a 3584-byte bitfield entry; the extra 256 bytes remain deliberately unresolved rather than guessed.

The code requires SLEEP_SALT/libsodium for cryptographic operation.
