message: Add Obj::set for optionals and unsigned integers
diff: @@ -188,6 +188,8 @@ public:
  {
  return set(get_column_key(col_name), value, is_default);
  }
  + template <typename U>
  + Obj& set(ColKey col_key, util::Optional<U> value, bool is_default = false);
  Obj& set_null(ColKey col_key, bool is_default = false);
  @@ -276,6 +278,27 @@ inline Obj& Obj::set(ColKey col_key, int value, bool is_default)
  return set(col_key, int_fast64_t(value), is_default);
  }
  +template <>
  +inline Obj& Obj::set(ColKey col_key, uint_fast64_t value, bool is_default)
  +{
  + int_fast64_t value_2;
  + if (REALM_UNLIKELY(int_cast_with_overflow_detect(value, value_2))) {
  + REALM_TERMINATE("Unsigned integer too big.");
  + }
  + return set(col_key, value_2, is_default);
  +}
  +
  +template <class U>
  +inline Obj& Obj::set(ColKey col_key, util::Optional<U> value, bool is_default)
  +{
  + if (value) {
  + return set(col_key, *value, is_default);
  + }
  + else {
  + return set_null(col_key, is_default);
  + }
  +}
  +
  template <>
  inline Obj& Obj::set(ColKey col_key, const char* str, bool is_default)
  {
  