ENH: backport Python 3.3 ChainMap

ChainMap implements a list of mappings that effectively functions as a single
dictionary. This class is very useful for implementing scope. This commit also
adds a DeepChainMap subclass of ChainMap for writing and deleting keys.
CLN/ENH: refactor Scope

The Scope class now uses DeepChainMap to look up names, and uses inspect.stack
instead of iterating over a hard coded number of frames and getting the
previous frame through the f_back attribute.
CLN/ENH: use swapkey instead of crazy hack
CLN: update expr.py for scope changes and remove unused isexpr
ENH/CLN: track scope instead of hard coding minimal stack level
BUG: allow scope usage if resolvers throw a key error but a resolver exists and not a local var
TST/CLN: more extensive scope tests
ENH: update pytables for new scoping
ERR/API: disallow local references in top-level calls to eval
BUG: globals should come before locals so that they get looked up after them
TST/BUG: adhere to the API change in test_frame.py
BUG: ChainMap m parameter only exists in Python 3.4

So backport that as well.
BUG: use a regular for loop in _ensure_term

In Python 3.x list comprehension build up stack frames, thus providing the
stack level to search is not the same as it is in Python 2.x.
DOC: add release notes and update docs regarding changed local variable API