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
layout: Float table wrappers directly instead of generating a block
wrapper around them.

Fixes Wikipedia tables leaking out.

Along the way, I refactored tables' width calculation significantly.
This was necessary in order to properly handle floated tables, as some
of the logic had to be ported over from block flows.