Remove OptNewVector and use Vec instead.

Before we had Vec<T>, Option<~[T]> was used as an optimization of ~[T]
to avoid allocating for empty vectors when that was the common case.
Vec<T> itself does this optimization, so there is no need for this anymore.
auto merge of #2432 : SimonSapin/servo/remove-optnewvector, r=larsbergstrom

Before we had Vec<T>, Option<~[T]> was used as an optimization of ~[T] to avoid allocating for empty vectors when that was the common case. Vec<T> itself does this optimization, so there is no need for this anymore.

r? @larsbergstrom
Switch to using ContravariantLifetime in JSRef<'a, T>.

Since ContravariantLifetime doesn't take up any storage space, this
means that JSRef will be a single word. This fixes #2333.
Don't check the field parameter in LayoutNode::eq.

The chain field shouldn't be relevant for equality, since it is just a
hack to artificially extend lifetimes.
Use ContravariantLifetime in LayoutNode.

Since ContravariantLifetime uses no storage, this will reduce the size
of a LayoutNode from 3 words to 2.
auto merge of #2436 : zwarich/servo/contravariant-lifetime-layout, r=pcwalton

Since ContravariantLifetime uses no storage, this will reduce the size of a LayoutNode from 3 words to 2.
Add dotted border support.
auto merge of #2438 : bjwbell/servo/dotted-border, r=pcwalton

Basic support for dotted borders.
auto merge of #2435 : zwarich/servo/contravariant-lifetime, r=jdm

Since ContravariantLifetime doesn't take up any storage space, this
means that JSRef will be a single word. This fixes #2333.
Update Rust.
Rust update submodules for OSX and test runner code.