Issue title: this in signature function
 Issue body: ```
class A {
    a: number;

    handler( this: A, event: Event ): void {
        this.a = 0;
    }
}

class B {
    b: string;
}

class C {
    c: boolean;

    on( handler: (this: C, event: Event) => void ): void {}
}

let a = new A();
let c = new C();

c.on(() => a.handler); // bag?
```
 Comments: 
 Comment 0: This is all working as intended. In the first call to `c.on(() => a.handler)` you're passing a value of type `() => (this: A, event: Event) => void` to a parameter of type `(this: C, event: Event) => void`. It succeeds because the callback function ignores the extra parameters, and the result of the callback is ignored because `void` is expected. In other words, it is safe to pass the parameter list `(this: C, event: Event)` to a function expecting no parameters, and it is safe to return a `(this: A, event: Event) => void` to something that expects no result.
{'source': 'GithubIssues', 'repo_name_with_owner': 'Microsoft/TypeScript', 'issue_id': 251509279, 'repo_stars': 50182.0}