fix(library/Makefile.common): clean remove olean/d files recursively

[skip ci]
feat(library/standard/logic/connectives/if): add more general if_congr theorem

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/unifier): constraint priority in the unifier, and remove hack from if.lean

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(build): delete incorrect/old .d and .olean files, detect errors when generating .d files.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(build): clean-olean target deletes .olean and .d files

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(util/realpath): rename realpath to lrealpath

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(util/lean_path): use unix style paths when using cygwin

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(util/realpath): realpath on cygwin

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(bin/lmake): add lmake

lmake tries to find a makefile in the current working-directory or its
ancestors and invoke the makefile if found. If a makefile is not found,
it calls lean directly. This is also used for flycheck-lean.

Usage:

    $ lmake
    $ lmake all
    $ lmake clean
    $ lmake basic
    $ lmake basic.lean
    $ lmake /home/user/projects/lean/library/.../basic.lean
    $ lmake --flyinfo --flycheck basic
feat(library/standard): add classes for relations