Define a non-enumerable property on an object. Uses Reflect.defineProperty when available, otherwise Object.defineProperty.