Make satisfiable() work with arbitrary expressions, not just Symbols

This is in the same spirit as https://github.com/sympy/sympy/pull/2451.

This also should make satisfiable() more deterministic by sorting the symbols.
Fix spelling error in function name
Make bin/ask_update.py grab the right sympy
New assumptions: zero is even

This also lets it deduce that zero is an integer.
Use a context manager in ask_update.py
Sort the keys in the ask_generated.py dictionary

This will make the diffs much less drastic when new facts are added.
Merge branch 'master' into satisfiable_expr

Conflicts:
	sympy/logic/tests/test_inference.py
Always generate ask_generated.py with set([]) notation

In Python 3, repr(set) uses {} notation, which is not compatible with Python
2.6.

This also sorts the entries of the sets, so that running ask_update.py without
any changes should always result in the exact same ask_generated.py.
Merge branch 'master' into satisfiable_expr
Merge pull request #2513 from asmeurer/zero_is_even

Add zero is even fact to new assumptions
Add Amit Saha to .mailmap
Merge pull request #2552 from smichr/auth

Add Amit Saha to .mailmap
Change to gmail address in AUTHORS for Amit Saha
Merge pull request #2506 from asmeurer/satisfiable_expr

Make satisfiable() work with arbitrary expressions, not just Symbols
Merge pull request #2553 from amitsaha/master

Change to gmail address in AUTHORS for Amit Saha