mozilla/servo — pull request #1548 by ryanhc (2014-01-24 09:13:36+00:00)
Title: Supporting preliminary fixed-layout table

Supporting preliminary fixed-layout table

This pr gives a preliminary implementation of fixed-layout table.
We define table-related flows, and they are organized as follows:

```
TableWrapperFlow
BlockFlow for caption
TableFlow
TableColGroupFlow
TableRowGroupFlow
TableRowFlow
TableCellFlow
BlockFlow OR InlineFlow go here
```

TableWrapperFlow corresponds display: table.
Also, TableFlow is explictly created, when TableWrapperFlow is created.

TableRowGroupFlow and TableColGroupFlow correspond display:
table-row-group, and table-column-group, respectively.

TableCellFlow and TableRowFlow correspond display: table-cell and
display: table-row, respectively.

In this fixed-layout table implementation, we
1. Extends the current flow tree to support display: table* properties
2. Display fixed-layout table. In particular, it
a) Reads specified widths from table cells bottom-up
b) Calculates the width of the table.
c) Calculates the margin, border, padding of table and table cells.

This pr sets up the basic structure of table, and we will extend it in
the subsequent prs.

To do:
1. width=auto is to be done in the next pr.
2. preliminary height calculation is to be done in the next pr.
3. thead, tbody, tfoot are not supported yet. In particular, when
the width of the table is calculated, the cell widths are read
from the first row in a row group, but the row group is not
necessarily the first row group. This is to be fixed when thead,
tbody, tfoot are implemented.

This work is done in collaboration with @sonwow @june0cho

![table](https://f.cloud.github.com/assets/3498423/1993278/7efe944e-84d6-11e3-9114-926a526ac3d5.png)