Tweak the second: Table.Row is easier to instantiate

Namely, with a `<tr>` element and a `Table` instance. Now, you should
be able to do a silly thing like this:

row = Table.Row(element(table.create_row_from_element(row_element).table.find_row({'header': value})), table)
Tweak the third: Table constructor is easier to work with for normal tables

Many (most?) tables in CFME are "normal" tables, with thead and tbody children.
Table now assumes it's dealing with such a table. In cases where the tables are
abnormal, and the header body rows are in different tables, SplitTable joins the
party to handle the ridiculousness.

This commit also includes additional docs.
Existing Table instances converted to SplitTable where needed