Don't require root pipeline to match new pipeline

This reverts 2b0134be7bb8a4372f1a8703b5a1b114e65351f6 because it was
not correct for iframes.
Implement TElement for JSRef<Element>
Implement TNode for JS<Node>
Added ParentNode.querySelector skeleton
Implement querySelector for Document
Implement querySelector for DocumentFragment
Implement querySelector for Element
Added content tests for querySelector
Don't use mem::transmute for the argument to CreateProxyHandler.
Remove htmlmainelement.rs again (re-fixes #2541).
Squash a warning about deriving traits on a struct that contains a raw pointer.
Remove some code to support preffing off APIs.

We won't be using this feature in the near future, and the implementation is
not really Rustic.
Pass slices to CreateInterfaceObjects2 rather than raw pointers.
Remove the pointless terminator from ConstantSpec slices.
Store a slice in ConstantSpec, rather than a raw pointer.
Remove needless '&self mut' from VirtualMethods trait.
Use Cell for mutability of HTMLIFrameElement.sandbox.
auto merge of #2600 : saneyuki/servo/mut, r=Ms2ger

Related #2514
auto merge of #2596 : Ms2ger/servo/CreateProxyHandler-transmute, r=jdm
auto merge of #2597 : Ms2ger/servo/main, r=jdm