feat(CMakeLists.txt): use bin/package_version if needed

1) When git sha1 is available:

    Lean (version 0.2.0, commit 4a119a042435, Release)

2) When git sha1 is not available, but there is bin/package_version file

    Lean (version 0.2.0, package 0.2.0~ubuntu1~12.04, Release)

3) Git sha1 is not available, bin/package_version does not exist.

    Lean (version 0.2.0, Release)

Close #229
refactor(library/unifier): allow general 'unify' procedure to take an initial substitution as argument
feat(frontends/lean/class): accept only inductive datatypes (and records) as classes
feat(frontends/lean/builtin_cmds): add 'print classes' command