layout: Make percentage heights propagate through inline flows.

I found this random bug during an attempt to improve Wikipedia.
layout: Handle floated blocks with percentage heights correctly.

Improves the top menu in Wikipedia.
Merge pull request #3430 from pcwalton/inline-block-percentage-height

layout: Make percentage heights propagate through inline flows.
Reintroduce Untraceable<T>.deref_mut() to make mem::replace() possible to Untracebale<T> field.

Some compile errors caused by the compiler's misreading comes back again :(
We re-use `deref()`explicitly to hide these errors.
Use Untraceable<T> to hold LayoutDataRef instead of manual Encodable implementation.
Merge pull request #3418 from saneyuki/untrace

Replace manual Encodable implementation for LayoutDataRef with Untraceable
Share code between Navigator and WorkerNavigator

Also shares code between Location and WorkerLocation. This has been done
by introducing NavigatorInfo and UrlHelper.

Fixes #3159
Merge pull request #3400 from gilles-leblanc/issue-3279

Share code between Navigator and WorkerNavigator
More progress in the &JSRef -> JSRef conversion

Change all of the <Class>Methods traits to take `self` instead of
`&self`.
Convert various helper traits from &JSRef to JSRef

I converted them all with a few exceptions:

- Methods that were used by trait objects, since trait objects don't
  work with `self` methods.
- Methods that take an &'b JSRef<'a, T> and return an &'b. In reality,
  many (all?) could return an &'a instead, but this isn't allowed by the
  Deref trait.
- Methods that internally rely on the same issue with Deref.
- I left out the traits involved in layout entirely, even though not all
  of their methods suffer from one of the above problems.

There will probably be solutions to all of these problems in the future.
Remove some extraneous &* pairs