Add attribute_handlers option to LuaRuntime

Rather than having the Lua runtime always take care of getting/setting
Python object attributes, optionally allow Python hooks to handle that.

--HG--
extra : transplant_source : u%86%9AP%24%AE%B2%B5.%CFmkI%81%DC%F7%F43%5DY
make source_encoding argument in LuaRuntime accept Unicode strings in Py3
validate input value of attribute_handlers and attribute_filter arguments
document new attribute_handlers feature
changelog
changelog
Always (almost) translate Python None to Lua nil.

This might be horribly wrong with respect to some of the python.*
functions, but from a Lua-centric point of view, None should really
*never* come over to the Lua side.  It should *always* be nil.
The only exception left in place is when python.iter stuff is
invoked.

--HG--
extra : transplant_source : %8B%17R%F3%16%D0%3F%FF%7C%7F%AE%8Av%8Bf%08%24d%FD%FD
Extra test for nil/None patch

--HG--
extra : transplant_source : %DC%CA%18%AE5%91V%EF%BB%F12%A6B%AB%F22%ED%CB%8D%A2
not using flake8
clean up "no None values in Lua" change by avoiding the third special case
extend tests
move locking tests back to end of test.py to keep actual Lupa together
remove redundant code (Cython translated next() correctly and backports it to Py<2.6)
comment
avoid using C closure for wrapped Python iterators, fix corner cases in iteration where first return value could be nil (and thus terminate iteration)
if enabled, unpack tuple values also during enumerate() iteration, i.e. (i, (a, b)) -> (i, a, b)
move comment
improve code readability by using default argument instead of passing an almost-always-0 value
changelog
allow building with Lua API checks