Support binding to detached nodes

Specifically this handles the scenario of binding to nodes not yet added to the DOM, but will be added at some future point.
Make sure observable view model subscriptions are cleared correctly; add a spec that passed before the changes in f7f48b1715, and now passes again with the changes here.
Make sure "body" is always matched by domNodeIsAttachedToDocument (compareDocumentPosition doesn't consider a node contained within itself).
Use documentElement instead of body in domNodeIsAttachedToDocument.
Refine disposal rule so that we can dispose immediately if we're not watching for any DOM node removal
Merge pull request #657 from knockout/657-bind-detached-nodes

Make behaviour when binding to detached DOM elements consistent