Add ability to get local columns from wrapped functions

The `.local_columns` attribute on all wrapped tables should now work.
On wrapped functions (both tables and sources), it will evaluate the
function, store frame metadata, and return the frame columns.

For table sources this will also cause the registered table source to be replaced with the data frame, but now the function wrapper object will have working `.columns`, `.local_columns`, `.index`, and `len()` capabilities.