Adds explicit selection of hash functions to signing.

* network incompatible breaking change *
Reverts changes that breaks compatibility with older clients and replaces them with code tolerant of older clients.
Fixes StyleCop message.
Attempt at fixing backward compat.
Fixes failing unit test.
Touch up.
Split out hash algorithms for symmetric vs. asymmetric hashing operations.
This allows us to use SHA256 for hashing, and SHA1 for signing, which for now for compatibility with older apps, we need.
Merge branch 'CryptoInterop'