Fix typo in CTestConfig.cmake
Rename 'rewrite' to 'Rewriter', change type of rewriter::operator()
Update 'orelse' and 'then' rewriter to take a list of rewriters
feat(debug): improve lean_assert macro

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
doc(style): update C++ style guide
fix(kernel): add declarations for operator<<(std::ostream&, expr const&) and operator<<(std::ostream&, context const&) in the kernel

The actual implementation of these two operators is outside of the
kernel. They are implemented in the file 'library/printer.cpp'.
We declare them in the kernel to prevent the following problem.
Suppose there is a file 'foo.cpp' that does not include
'library/printer.h', but contains

    expr a;
    ...
    std::cout << a << "\n";
    ...

The compiler does not generate an error message. It silently uses the
operator bool() to coerce the expression into a Boolean. This produces
counter-intuitive behavior, and may confuse developers.
fix(tests/interval): use new lean_assert and lean_assert_eq
fix(tests/util): use lean_assert_eq
doc(coding_style): rename style.md to coding_style.md
doc(commit_convention): add git commit_convention