Synchronize digestParams & getExchangeSymbols.

For getExchangeSymbols this is to prevent the possibility of duplicate calls when caching currency pairs.  And also to prevent duplicates when the implementation is not using a Set.

For digestParams, maybe I am interpreting this incorrectly, but I'm not sure why this hasn't been an issue.  We use the same ParamsDigest for all calls so if someone is using the same client in multiple threads the hmac digest could get corrupted.

Also changed Crypsty's static currency pair cache to be a class member so that creating a new client capture any new currency pairs.