Allow context environment variables besides key and index

- Use the @ symbol to denote something that's not directly in the context data, but some sort of special data that was placed in the scope's environment by some block tag. @index and @key are just special cases of this.
Merge branch 'extensible-context-environments'
Make each helper more robust

Respond appropriately to dictionary-like objects, empty iterables, and non-iterables
Clean up Scope and render calls
- Be consistent with variables. 'this' should refer to a context variable -- usually POD, a list, dict, str. Scope objects should be called 'scope'.
- Pass the current scope in to the render method as parent
Merge branch 'extensible-context-environments'

Conflicts:
	pybars/_compiler.py
	pybars/tests/test_acceptance.py
Merge branch 'nested-list-context-fix'

Conflicts:
	pybars/_compiler.py
Protect against errors when we have things like a None context in a scope