chore(frontends/python): move frontend.i to expr.i

This allows us to build a number of *.i files which will be included in
one large lean.i file.
feat(frontends/python/expr.i): add printing and hash functions to the
python interface
chore(builtin/obj): commit olean files
feat(frontend/python): create a common file for lean bindings

The file lean.i includes the actual interface files, which themselves
are copies of the .h files of the same name. The .i files are not
strictly necessary, but are convenient for small modifications or
extensions relevant to python.
feat(examples/lean): add (conditional) proof of Hurkens paradox.

Author:    Cody Roux <croux@cmu.edu>
chore(frontends/lean/parser): fix style

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/elaborator): fix failure when processing constraints of the form ?M == ?M[...]

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>