Big update of WinJS definitions.

Went through and did a large number of fixes as part of converting the WinJS test tree to TypeScript.

Full list of changes:

Fix small issue with WinJS.Promise.timeout. (The first argument should be optional.)

Remove an unnecessary comment about winControl.

Fix WinJS Promise types

Make addEventListener and removeEventListener static.

markDisposable's second argument is optional.

WinJS.UI.Fragments.clearCache had a missing overload.

Add missing overload for WinJS.UI.Fragments.renderCopy.

WinJS.Class.define constructor parameter is optional.

Add override for WinJS.log

Message can also be a function that returns a string.

Also add override for WinJS.Utilities.startLog

All ILogOptions properties are optional.

Make WinJS.log arguments optional.

WinJS.Resources.processAll returns a Promise.

Add WinJS.Utilities.Scheduler.currentPriority

Make WinJS.Promise.wrap()'s argument optional.

Make IXHROptions data property optional.

Add CustomRequestInitializer to IXHROptions.

Correct doc comment for WinJS.Application.*.writeText

Fix declaration for static render on WinJS.Binding.Template.

Add WinJS.Utilities.getTabIndex.

Add overload for WinJS.Utilities.QueryCollection.include

Fix WinJS.Utilities.getRelativeTop and getRelativeLeft parameters.

Add getScrollPosition and setScrollPosition.

Make BindingList.createGrouped last argument optional.

Fix return type of WinJS.UI.computeDataSourceGroups()

Add missing static createResultSuggestionImage to WinJS.UI.SearchBox.

Add missing overload for WinJS.Binding.List.push()

Add generic overload for IItemPromise.then()

Fix the return value of IItemPromise.then to be correct.

Promise.dispatchEvent should be static.

Fix IItemPromise.retain return value.

Create IPromise interface.

This helps type coercion with custom promise types (such as IItemPromise).

Add missing animations to latest d.ts.

Update optional parameters on animations.

Add BindingList.unshift overload

Fix BindingList.sort() to have argument be optional.

Fix arguments for BindingList.splice and BindingList.join

Fix BindingList.lastIndexOf optional second argument.

Fix return time of items in GroupedSortedListProjections.

Make last argument of QueryCollection.template optional.

Fix WinJS.UI.Repeater constructor.

Fix the type of the second parameter of the WinJS.Binding.Template constructor

Update WinJS.UI.ListLayout so that it implements ILayout2.

Update WinJS.UI.GridLayout.

Add static Promise.cancel property.

Add type property to IListViewItem

Make argument to Promise.as optional.

Add AppBar.closedDisplayMode

Make some arguments optional on Flyout.show()

Make arguments optional on Menu.show();

Fix generic type of Hub.zoomableView.

Add missing Promise.then overloads.

Update author information

Fix IPageControlMembers to reflect the real contract.

TypeScript doesn't allow overrides to vary only by return type, so we have to use any as both void and returning a Promise are allowed.

WinJS.UI.Pages.render()'s second argument is optional.

WinJS.UI.Pages.render() returns a promise to the page itself.

Fix return values of WinJS.UI.Pages.get/define.

Add Pivot and PivotItem to latest d.ts.

Fix PivotItem.header type