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; };
```
stringIndexType looks like it might be undefined at this point, if you took the else path above. I would do stringIndexType || undefined just to make the intent clear.