script: Stop trusting pointers to DOM nodes that layout provides.

Pointers to DOM nodes from layout could go stale if incremental reflow
does not correctly destroy dead nodes. Therefore, we ask the JavaScript
garbage collector to verify that each DOM node is indeed a valid pointer
before calling event handlers on it, and fail otherwise.
auto merge of #1490 : pcwalton/servo/distrust-layout-new, r=jdm

Pointers to DOM nodes from layout could go stale if incremental reflow
does not correctly destroy dead nodes. Therefore, we ask the JavaScript
garbage collector to verify that each DOM node is indeed a valid pointer
before calling event handlers on it, and fail otherwise.

Depends on the `get-addressable-gc-thing` branches of `mozjs` and `rust-mozjs`.

r? @jdm
Create before_parent_node and before_node

Conflicts:

	src/components/main/layout/construct.rs
	src/components/main/layout/wrapper.rs
	src/components/script/dom/node.rs
	src/components/util/slot.rs
Build box for pseudo-element :before and :after with display = inline.

Conflicts:
	src/components/main/layout/construct.rs
	src/components/main/layout/wrapper.rs
	src/components/script/dom/node.rs
	src/components/util/slot.rs
Modify to cover pseudo element :before with display = block

Conflicts:

	src/components/main/layout/construct.rs
	src/components/main/layout/wrapper.rs
Implement pseudo element :after & remove unnecessary funtions