Better support for complex components

This includes a basic implementation of TableFor as an example of a "complex" component having builder-like functionality.  TreeFor, FormFor and TreeTableFor are envisioned as well as others.

This required or at least suggested a significant refactoring of components which I have been meaning to do for weeks.  Conceptually we want the components to compile down to transparent logic which is evaluated in the view.  To accomplish this we got rid of all the class level garbage in the component system including .render() and .using_logic which served to hide what was going on and made developing complex components more complicated.

Now more work is done during the compile stage.

Much capability has been gained by being able to convert Proc to their source through the #source and #source_body methods we have now added to Proc.