DynamoDB: fix delete_hash_key and typed_record support

delete_hash_key would fail when the range key was a binary, as the type information in the query was lost and the range key would be assumed to be a string. To fix this, added support for a new output type: `typed_record`. This preserves the type information of the attributes.

Diff is large because implementation passes options through the undynamize methods. This may be useful for other features in the future. Changes are mostly mechanical.