Object types as generic constraints are treated as uninstantiated when passing subtypes
Originally mentioned in this comment: https://github.com/nim-lang/Nim/issues/7713#issuecomment-821814214

Encountered in:
* https://forum.nim-lang.org/t/7798#49595
* https://stackoverflow.com/questions/67118749/nim-invalid-type-in-this-context-error

```nim
type
  Foo = object of RootObj
  Bar = object of Foo
  Baz[T:Foo] = object of RootObj
    val:T
let x = Baz[Bar]()#Error object constructor needs an object type
type
  Qux = object
    val:Baz[Bar]
let y = Qux() #Error: invalid type: 'Baz[Baz.T]' in this context: 'Qux' for let
```

concepts work:

```nim
type
  Foo = object of RootObj
  IsFoo = concept type t
    t is Foo
  Bar = object of Foo
  Baz[T:IsFoo] = object of RootObj
    val:T
  Qux = object
    val:Baz[Bar]
let x = Baz[Bar]()#fine
let y = Qux() #fine
```

another workaround:

```nim
func init[T:Foo](b: type Baz; c: typedesc[T]):Baz[T] = discard
let x = Baz.init(Bar)
```

Works if passing just `Foo` instead of `Bar`