normaliseType is not well-kinded
Suppose we have
```
Proxy :: forall k. k -> Type
type family F a
type instance F Int = Bool
```
and we're trying to normalise the target
```
Proxy (F Int) x
```
Clearly, for this target to be well kinded, we need `x :: F Int`. Currently, the output of `normaliseType` is `Proxy Bool x`, which is just plain wrong.
I need to implement logic like in `flatten_args` on [my branch](https://github.com/goldfirere/ghc) in `normaliseType` to fix this.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.2.2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"normaliseType is not well-kinded","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.2.2","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"Suppose we have\r\n\r\n{{{\r\nProxy :: forall k. k -> Type\r\n\r\ntype family F a\r\ntype instance F Int = Bool\r\n}}}\r\n\r\nand we're trying to normalise the target\r\n\r\n{{{\r\nProxy (F Int) x\r\n}}}\r\n\r\nClearly, for this target to be well kinded, we need `x :: F Int`. Currently, the output of `normaliseType` is `Proxy Bool x`, which is just plain wrong.\r\n\r\nI need to implement logic like in `flatten_args` on [https://github.com/goldfirere/ghc my branch] in `normaliseType` to fix this.","type_of_failure":"OtherFailure","blocking":[]} -->
issue