feat(library/defitional): add no_confusion_type construction for inductive datatypes that are not propositions
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)