Cache items with their cache scope, remove table_source

In anticipation of fully implementing cache scope controls this
removes the table_source decorator and makes a namedtuple
container object for cached items so that items can be cached along
with the information about their cache scope.
fix another usage of table_source
Add automatic cache clearing based on scope

Table, column, and injectable decorators now take a cache_scope
argument that can be 'step', 'iter', or 'forever'.
Thing with a scope of 'step' are cleared after each model,
things with a scope of 'iter' are cleared at the end of each model year,
and things with scope 'forever' are never automatically cleared.
Always convert table functions to wrapped DataFrames

It occurred to me that one of the benefits of table_source was that
it converted the registered thing to a DataFrameWrapper that allows
you to access the underlying DataFrame.

To keep the same benefit now that table_source is gone I've converted
the simulation framework so that the injection and get_table always
result in a wrapped DataFrame. This could result in a little more computation
while evaluating dependencies, but caching still works the same
so things that are cached will only be built once
(or until they are removed from the cache).
Change ._frame attribute to .local

There are situations when you need to directly access the DataFrame
underlying a DataFrameWrapper, especially when trying to shadow that
column with a computed column. Instead of forcing people to use
the semi-private ._frame now it's .local.
Add caching section to simulation docs

[ci-skip]
fixes from rebase on top of copy_col changes
Remove copy tests related to TableFuncWrapper

A couple of the tests in test_table_copy were testing
the behaviour of TableFuncWrapper, but those don't enter
user space anymore, get_table always returns a DataFrameWrapper.
Fix and cleanup sim framework copy tests

get_table now returns a DataFrameWrapper, which will not be
re-evaluated with __getitem__. Instead, call get_table twice.

to_frame() always returns copies, so avoid using it when
testing other behavior.

Rename table_source since it has been replaced by cache=True.

Use a for loop to reuse code when creating tables of computed columns.
Merge pull request #129 from synthicity/cache-scope

Set scope on cached data

The user can set a scope on cached data so that the simulation framework
can take care of expiring cached items on a schedule,
saving the user from having to do manual cache management.
Removes the "table source", which is replaced by cache mechanics.