Fixes #296 Make the sql stream id hasher pluggable and specifyable during wireup.

If none specified, the Sha1StreamIdHasher is used.

Also contains protective code to ensure that any specified hasher doesn't produce an invalid hash value (null, empty, whitespace, > 40 chars)