refactor(util): make 'util/test.h' the first include

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(deep_copy): simplify deep_copy implementation, and move unit test to separate file

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
test(trace): add unit test for trace module

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
test(exception): add new tests exception and parser_exception

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
test(bit_tricks): add tests for log2
refactor(debug): improve lean_unreachable(), now we can avoid 'fake' return statements

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