Move common macros into a new crate (fixes #1882)
Watch for test failures, not just I/O errors.
Make JS<T>::clone inline.(fixes #1955)
Remove |unused| field from DOMClass.(fixes #1960)
auto merge of #1967 : lpy/servo/issue1960, r=Ms2ger

see #1960
auto merge of #1965 : jdm/servo/harnessfix, r=Ms2ger
Annotate 'inline' to TCast::to/to_unchecked/from.
auto merge of #1947 : saneyuki/servo/cast, r=jdm

follow up https://github.com/mozilla/servo/pull/1864#issuecomment-37109672
auto merge of #1966 : lpy/servo/issue1955, r=jdm

see #1955
Refactor assign_height and assign_width for block flow.
Add fixed table test cases
Construct table-related flow and calculate fixed layout
Support a part of anonymous table(step 1-1, 1-2, 2).
Not Covered: step 1-3, 1-4, 3-1, 3-2
*Spec: http://www.w3.org/TR/CSS21/tables.html#anonymous-boxes
Remove some unnecessary transmutes.

These can either be done by implicit `&` -> `*` coercions, explicit `*`
-> `*` casts, or an explicit `&*x` `*` -> `&` re-borrow (which is still
unsafe, but significantly more controlled compared to a `transmute`).
Set a name for WorkQueue tasks (fixes #1830)
auto merge of #1958 : mbrubeck/servo/macro-crate, r=kmcallister

This moves the bitfield! macro into a new shared `macros` crate as suggested in #1882.
auto merge of #1973 : june0cho/servo/table_rebase, r=larsbergstrom,metajack

This is a rebase of #1548 on recent master.

There have been many changes since #1548 is first uploaded, so I'm creating new PR.
This PR includes:
 - construction of table-* flows (table-wrapper, table-caption, table, table-rowgroup, table-row, table-cell)
 - fixed-layout table calculation
 - a part of anonymous table object implementation 
[CSS 2.1, 17.2.1](http://www.w3.org/TR/CSS21/tables.html#anonymous-boxes) (Step 1-1, 1-2, Step 2)
auto merge of #1977 : mbrubeck/servo/task-name, r=jdm

Now with 100% less breaking everything.  (An earlier version of this patch in #1948 switched WorkQueue from native tasks to green tasks, which I missed in testing because we don't spawn new layout threads by default on 1- or 2-core machines.)
auto merge of #1978 : huonw/servo/less-transmute, r=Ms2ger

These can either be done by implicit `&` -> `*` coercions, explicit `*`
-> `*` casts, or an explicit `&*x` `*` -> `&` re-borrow (which is still
unsafe, but significantly more controlled compared to a `transmute`).
Restart selector matching from an appropriate selector

Introducing 3 matching failure statuses,

    NotMatchedAndRestartFromClosestLaterSibling
    NotMatchedAndRestartFromClosestDescendant
    NotMatchedGlobally

When NotMatchedGlobally appears, stop selector matching completely since
the succeeding selector matching always fails.
It is raised when
    Child selector cannot find the candidate element
    Descendant selector cannot find the candidate element

When NotMatchedAndRestartFromClosestDescendant appears, the selector
matching does backtracking and restarts from the closest Descendant
selector.
It is raised when
    NextSibling selector cannot find the candidate element
    LaterSibling selector cannot find the candidate element
    Child selector matching on the found element fails

When NotMatchedAndRestartFromClosestLaterSibling appears, the selector
matching does backtracking and restarts from the closest LaterSibling
selector.
It is raised when
    NextSibling selector matching on the found element fails.

For example, when the selector "d1 d2 a" is provided and we cannot *find*
an appropriate ancestor node for "d1", this selector matching raises
NotMatchedGlobally since even if "d2" is moved to more upper node, the
candidates for "d1" becomes less than before and d1 always fails.

The next example is siblings. When the selector "b1 + b2 ~ d1 a" is
providied and we cannot *find* an appropriate brother node for b1,
the selector matching raises NotMatchedAndRestartFromClosestDescendant.
The Sibling element checks of the selectors ("b1 + b2 ~") fails and
matching restart from "d1".

The additional example is child and sibling. When the selector
"b1 + c1 > b2 ~ d1 a" is provided and the selector "b1" failed to match on
the element, this "b1" raises NotMatchedAndRestartFromClosestLaterSibling.
However since the selector "c1" raises
NotMatchedAndRestartFromClosestDescendant. So the selector
"b1 + c1 > b2 ~ " fails and restart matching from "d1".