 row 1, column 1   | column 2   | column 3 | column 4 |
    +------------------------+------------+----------+----------+
    | body row 2             | Cells may span columns.          |
    +------------------------+------------+---------------------+
    | body row 3             | Cells may  | - Table cells       |
    +------------------------+ span rows. | - contain           |
    | body row 4             |            | - body elements.    |
    +------------------------+------------+---------------------+

Intersections use '+', row separators use '-' (except for one optional
head/body row separator, which uses '='), and column separators use '|'.

Passing the above table to the `parse()` method will result in the
following data structure::

    ([24, 12, 10, 10],
     [[(0, 0, 1, ['Header row, column 1']),
       (0, 0, 1, ['Header 2']),
       (0, 0, 1, ['Header 3']),
       (0, 0, 1, ['Header 4'])]],
     [[(0, 0, 3, ['body row 1, column 1']),
       (0, 0, 3, ['column 2']),
       (0, 0, 3, ['column 3']),
       (0, 0, 3, ['column 4'])],
      [(0, 0, 5, ['body row 2']),
       (0, 2, 5, ['Cells may span columns.']),
       None,
       None],
      [(0, 0, 7, ['body row 3']),
       (1, 0, 7, ['Cells may', 'span rows.', '']),
       (1, 1, 7, ['- Table cells', '- contain', '- body elements.']),
       None],
      [(0, 0, 9, ['body row 4']), None, None, None]])

The first item is a list containing column widths (colspecs). The second
item is a list of head rows, and the third is a list of body rows. Each
row contains a list of cells. Each cell is either None (for a cell unused
because of another cell's span), or a tuple. A cell tuple contains four
items: the number of extra rows used by the cell in a vertical span
(morerows); the number of extra columns used by the cell in a horizontal
span (morecols); the line offset of the first line of the cell contents;
and the cell contents, a list of lines of text.
z\+=[=+]+=\+ *$c