Fix, optimizations and new functionnalities for knockout definition

Hi, 

This new version of the definition of Knockout offer some usefull functionnalities :
- inheritance of observable and computed
- inheritance of template sources
- inheritance of template engines
- append missing types
- append types in all methods
- Fix issues and optimize code

#### Here is the details of the pull request :
Append KnockoutSubscription and KnockoutSubscribable
Make observable, computed and observable array inherits from subscribable
Append properties in interfaces when necessary

Append missing properties from KnockoutComputedDefine<T>
Append result types in DomData and DomNodeDisposal
Append method override for getFormFields with fieldName of type RegExp

Append types on memoization methods
Append selectExtensions
Append expressionRewriting
Append bindingProvider
Fix issues in KnockoutVirtualElements

Append missing methods to KnockoutUtils
- objectForEach
- peekObservable
- registerEventHandler
- compareArrays
- setDomNodeChildrenFromArrayMapping

Fix type issue in methods
- setHtml 
- unwrapObservable
- triggerEvent
- toggleDomNodeCssClass
- postJson
- strigifyJson
- applyBindings
- applyBindingsToDescendants
- applyBindingsToNode
- dataFor
- contextFor

Append top-level methods and fields :
- subscription
- dependentObservable
- unwrap ==> ko.utils.unwrapObservable
- isWriteableObservable

Fix issues in Templates :
Append specific interface for different TemplateEngine
Make template engines inherit from TemplateEngine
Append KnockouTemplateOptions interface

Recreate Template Source typing
Append KnockoutTemplateSource interface for inheritance
Append KnockoutTemplateSourceAnonymousTemplate type
Make KnockoutTemplateSourceDomElement inherits from KnockoutTemplateSource 

Simplify Static Interface by creating to generics types : 
- KnockoutPrototypeStatic
- KnockoutInstancePrototypeStatic