refactor(frontends/lean/info_manager): intrusive smart pointer for info_data

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(frontends/lean/info_manager): to allow cache to be used when producing info data, fixes #37, closes #45

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(frontends/lean): add 'SYMBOL' and 'IDENTIFIER' information to info_manager

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(frontends/lean/elaborator): generate identifier information for overloaded identifiers

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(tests/lean/interactive): adjust test output to reflect new features

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/module): ignore multiple declarations of 'sorry', fixes #59

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
chore(frontends/lean/server): remove leftover

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(frontends/lean/decl_cmds): improve error message for invalid end of theorem

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(tests/lean/interactive): remove leftover from test output

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(bin/lmake): add --always-make(-B) option
fix(bin/lmake): save .olean file when makefile doesn't exist
fix(emacs/lean-util): add missing 'cl-' prefix
feat(emacs): define lean-mode as a derived-mode of prog-mode

Fix #52
refactor(emacs/lean-type): clean up
feat(emacs/lean-info): add identifier/symbol/nay
fix(emacs/lean-server): check buffer-modified-p before create a process

fix #57
fix(library/unifier): bug in unifier priority queue

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(frontends/lean/elaborator): case-split on coercions that cannot be resolved by postponing

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(frontends/lean): try overloaded notation and declarations in the order they were defined

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(frontends/lean): change the name resolution rules: when in a namespace N that defines C, then C always refers to N.C (i.e., it overrides any alias)

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