Fix crash when sending embed
Created by: uwx
Summary
Fixes the crash when receiving a message with an embed that contains a custom color.
Details
The crash was due to the following:
- Support for serializing Optional, but no support for deserializing it.
- Optional serializer would assume the member being serialized is a property which it maybe not.
Changes proposed
- Add support for Deserializing Optional, and serializing Optional fields
- Cache JsonSerializerSettings
- Fix guild edit payload sending incorrect data (likely due to a bad merge)
Notes
TODO: Are the member edit payloads correct? Should double check at some point.