Value instances depending on nullable elements don't generate proper code
### Existing issue with C++ testcase

This is already an existing problem the C++ test case type_ternary_2nd_falsy:

The problem is the following line:
```c++
BOOST_CHECK(r->_is_null_v_null_ut());
```

Snip testcase to show the problem:
```ksy
instances:
  null_ut:
    value: ut
    if: false
  v_null_ut:
    value: 't ? null_ut : ut'
```

Since `v_null_ut` can depend on `null_ut`, it also can be null.
But for `v_null_ut` there is no `_is_null_` method generated.

It happens to work in other language like C#, since it's a pointer and C# doesn't use those is_null methods. But as you soon see, the problem is of a more general nature.

### Base Problem
Assume the following ksy:
```ksy
meta:
  id: type_ternary_2nd_falsy_2
seq:
  - id: f
    type: u1
instances:
  null_ut:
    value: f
    if: false
  v_null_ut:
    value: 'true ? null_ut : f'
```

This will generate the following code in C#:
```c#
public byte? NullUt   { 
    get { /* ... */  }
}

public byte VNullUt {
    get {
        if (f_vNullUt)
            return _vNullUt;
        _vNullUt = (byte) ((true ? NullUt : F));
        f_vNullUt = true;
        return _vNullUt;
    }
}
```

This will crash when NullUt is null, since null cannot be cast to byte. VNullUt needs to be nullable as well.

This probably needs to be fixed in the base classes somewhere, I just don't know how to best approach this.