Q: moved from module + functions to interface approach

This change has been made to cater for what appears to be a bug with Declaration Merging in TypeScript 0.9.5.  You can find details on the problem [here](https://typescript.codeplex.com/workitem/1995) - also take a look at my comment [here](https://typescript.codeplex.com/workitem/1995#CommentContainer18).  If you could vote up this issue on CodePlex that would be greatly appreciated.  It would be good to get the fix made for the next version of  TypeScript.

There have been changes to the tests purely because interfaces are no longer nested in a module.  So the following changes in interface name apply:

```Q.Promise``` => ```QPromise```
```Q.IPromise``` => ```QIPromise```
```Q.Deferred``` => ```QDeferred```
```Q.PromiseState``` => ```QPromiseState```

The tests are otherwise unchanged and still pass on my machine.

I have *no* intention to merge this myself without some input first from other Q users - ideally from @AndrewGaspar and @bnemetchek.

If this is merged then anyone who has reference to ```Q.Promise```, ```Q.IPromise```, ```Q.Deferred``` or ```Q.PromiseState``` will need to change these entries in their code.

For what it's worth I've only made these changes because of the TypeScript 0.9.5 bug.  Otherwise I was quite happy for the typings to be defined using  the module + functions approach.  But this seems to be necessary for now and may help other people who are otherwise holding off upgrading to TS 0.9.5.