add define-foreign-procedure helper

* gcrypt/internal.scm: New file.
* gcrypt/internal.scm (define-foreign-procedure): New syntax form creates
  low-level bindings compactly.

* gcrypt/hash.scm:
* gcrypt/random.scm: Refactor to use define-foreign-procedure.

* Makefile.am: Update for new source file.

* gcrypt/hash.scm (algo->dlen): Return type is unsigned-int.
fix typo in hash?

* gcrypt/hash.scm (hash?): Fix typo to call the predicate properly.
hash: add md context interface

* gcrypt/hash.scm: Add constants MD_FLAG_SECURE, MD_FLAG_HMAC.  Add
  type and procedure wrappers for message digest contexts.  This
  interface is more efficient for streaming data and computing
  multiple digests than the previous one.
hash: md-read sets md-finalized?

* gcrypt/hash.scm (md-read): Set md-finalized? #t on reading the digest.
hash: remove duplicate flag exports

* gcrypt/hash.scm (gcrypt hash): Remove duplicate flag exports.
Fix the buildsystem with a patch from ’add^_’