Split out basic functionality of tableCell so other nodes can behave as cells
Create TableCellableNode, and adds properties isCellable (which is
set to true for AlienBlock node as well as TableCell), and
isCellEditable, which is only true for proper TableCell nodes.
Support TableSelection when performing getting selection rectangles
from the surface.