Allow custom deserializer in MessageHandlerForSingleMessageType

* When polling a queue that will only receive one message type, a caller can use the conveniene handler `MessageHandlerForSingleMessageType`, that only deserializes the message and forwards to an actual handler.
* The previous implementation of `MessageHandlerForSingleMessageType` did not support encrypted messages.
* To allow callers to use `MessageHandlerForSingleMessageType` with a deserializer that does decryption, this commit adds a ctor parameter so that a custom deserializer can be used.
* In effect, with this change, you can use QueueProcessor for encrypted messages the same way you would do with regular messages.