Deferred resolution of object literal members to support recursive types.

Fixes #523.

With this change the following declarations all create recursive types:
```typescript
var a: { x: typeof a; };
var b: () => typeof b;
var c: { (): typeof c; };
var d: { [s: string]: typeof d; };
```
It's used in both if statements below.