fix(frontends/lean/info_manager): std::set insert is a noop if set already contains an equivalent element
feat(frontends/lean): `lean --server` should display meta-variables using the approach used in check command, closes #280
feat(frontends/lean/builtin_cmds): remove workaround for getting nice metavariable names in the check command

We don't need it anymore after previous commit 2a16050
feat(frontends/lean): display metavariable application arguments in check command

The idea is to "fix" counter-intuitive output like the ones were
produced in the tests check.lean and check2.lean
feat(frontends/lean/placeholder_elaborator): add 'elaborator.unique_class_instances' flag, closes #265

By default, it is false.
When it is true, class instance resolution generates an error if there
is more than one solution.
feat(frontends/lean/placeholder_elaborator): better error message for ambiguous class-instance resolution
feat(frontends/lean): make `set_option` affect fingerprints
test(tests/lean): add unique class instance resolution test
feat(frontends/lean/calc): wrap calc proofs with 'proof-qed' annotation to identify places where proof influences what is being proved

Later, we will add a custom annotation and elaborator for calc proofs.
This is the first step for issue #268.

Remark: we don't wrap the proof if it is of the form

   - `by tactic`
   - `begin tactic-seq end`
   - `{ expr }`
chore(library/data/quotient): replace 'let' with 'have' and cleanup
feat(frontends/lean): insert `!` in calculational proofs when needed

This is part of #268
feat(frontends/lean): try to inject symmetry (if needed) in calc proofs, add calc_symm command for configuring the symmetry theorem for a given operator

This is part of #268
refactor(library/data/nat): remove unnecessary `!` and `eq.symm`

The calc command automatically adds them now.
feat(frontends/lean/calc): expose get_calc_subst_info and get_calc_refl_info APIs
feat(frontends/lean/calc_proof_elaborator): add '{...}' if needed in calc proof steps

This is part of #268
feat(frontends/lean/calc_proof_elaborator): add '{...⁻¹}' if needed in calc proofs, closes #268

This commit also simplifies library/data/nat/basic.lean
chore(doc/make): we don't use `thread_local` keyword anymore
doc(make/osx-10.9.md): update available compilers and required/optional pacakges

[skip ci]
fix(frontends/lean/calc_proof_elaborator): improve calc proof assistant
refactor(library/data/nat/basic): remove unnecessary `{}`