WL#6613: Refactor logging code - split logging and binlogging code

Affects: Server-5.7   —   Status: Complete   —   Priority: Medium

This worklog aims to refactor logging code (log.h/log.cc)

Overall aims of the refactoring:
- Split binlogging code from general/slow/error logging code
  so that replication and runtime teams can work independently.
- Improve code documentation.
- Make logging code easier to test.
Planned refactorings/changes:

1) Get rid of MYSQL_LOG class, so that MYSQL_QUERY_LOG and MYSQL_BIN_LOG
   become independent classes. Reasons:
   - MYSQL_LOG has not a lot of code
   - We never refer to MYSQL_LOG, only to MYSQL_QUERY_LOG and MYSQL_BIN_LOG
   - MYSQL_LOG has no virtual functions
   - MYSQL_LOG has a "log_type" member which can be either LOG_NORMAL
     or LOG_BIN and several functions have different behavior depending on
     the value.
   - Some MYSQL_LOG functions/parameters are only used by one of the subclasses.

2) Move code only related to replication out of log.h/log.cc

3) Add doxygen comments to log.h

4) Move logging related code to log.h/log.cc from sys_vars.cc, sql_parse.cc,

5) Simplify log initialization/cleanup code. Do more in constructors/destructors,
   don't initialize the same thing twice etc.

6) Remove dead code.

7) Split error log code from general/slow query log code. These logs are quite
   different both implementation and usage wise. E.g. we support stderr/file
   for error log, but file/table for query logs.

8) Rename classes/functions/variables to be more consistent and more clearly
   indicate their role.

9) Update code to follow coding guidelines.

10) Lock/unlock related mutexes in a more consistent manner - LOCK_log,
    LOCK_logger, LOCK_global_system_variables.

11) Make functions/variables private and const whenever possible.

12) Remove code duplication.