Various Config object cleanups

This has expanded a bit, as bugs have been found and fixed:


- don't create LazyConfigValue on `__` names (closes #4447)
- `'Section' in cfg` shouldn't return True
- fix bad branch logic causing failures on Python 3
- cleanup workarounds for PyPy
- add some missing copy calls that could break repeated merges
- remove some artifacts of the initial Config design that we never implemented (e.g. builtins for use as `exec` namespace).