feat(library/defitional): add no_confusion construction for inductive datatypes that are not propositions
refactor(library/data/sum): use `no_confusion` construction to simplify proofs
refactor(library/data/nat/basic): use `no_confusion` construction to simplify proofs
feat(library/algebra/order): begin theory of orders

feat(library/algebra/order): begin theory of orders
feat(library/hott/trunc): prove that n-types are (n+1)-types.
feat(hott/trunc): clean up some theorems, prove some basic theorems
refactor(typeof): move typeof to general_notation
doc(algebra): update markdown files
style(library): rename set_category to discrete_category
style(library): add some comments
feat(empty): define negation of types
feat(library): port more of truncation library from Coq HoTT

Everything directly about truncations in the basic truncation library is ported.
Some theorems about other structures still need to be ported.
Also made some minor changes in hott.equiv
fix(lean-util): handle case where incomplete hierarchical name ends with "."

Close #311
fix(emacs/lean-mode): remove whitespace-cleanup-mode dependency

 - When customization variable 'lean-delete-trailing-whitespace' is
   non-nil, trailing-whitespaces are removed before save.

 - It doesn't change TABs.

Close #226
test(tests/lean/run): define below_rec_on (aka brec_on) for vectors
test(tests/lean/run): fibonacci using below_rec_on (aka brec_on)
feat(frontends/lean): add option pp.purify_metavars

It is true by default. If the user sets it to false, then
the internal metavariable names are used in the pretty printer
feat(frontends/lean): add elaborator.trace_instances option

When on this option allows us to visualize "class-instance resolution"
fix(frontends/lean): include position information
feat(frontends/lean): include file-name and line/col numbers when displaying class-instance resolution trace