WL#5579: Add 'page_cleaner' a separate thread to flush dirty pages

Status: Complete

In Trondheim we decided that it makes sense to move the flushing activity in 
innodb to a separate thread.

Currently flushing activity happens in either the master thread or in the user 
threads.

There are two types of flushing activities i.e.: flush_list and LRU_list. More 
details about this can be found in the following presentation: 
https://inside.mysql.com/mywiki/images/f/fe/InnoDB_flushing.odp

This WL will trace the following activities:

* Have a separate thread for flushing. We'll call it page_cleaner. No strict 
opinion on name. If you have something better I'll change it.
* Move the flushing of dirty pages from the master thread to the page_cleaner
* Move the flushing when log->max_modified_age_async is reached to the 
page_cleaner.

The following won't be touched by this WL:
* Flushing that happens in the user thread when log->max_modified_age_sync is 
reached.
* LRU flushing (WL#5580)

* After tweaking with adaptive flushing heuristics I have realized that it is 
better left as a separate piece of work. The scope of this WL is now to have a 
page_cleaner thread and move async flushing to the background. WL#5666 is for
adaptive flushing.

Changes in innodb status output:
================================

        fprintf(file,
                "Log sequence number %llu\n"
                "Log flushed up to   %llu\n"
+               "Pages flushed up to %llu\n"
                "Last checkpoint at  %llu\n",
                log_sys->lsn,
                log_sys->flushed_to_disk_lsn,
+               log_buf_pool_get_oldest_modification(),
                log_sys->last_checkpoint_lsn);


-       fprintf(file, "srv_master_thread loops: %lu 1_second, %lu sleeps, "
-               "%lu 10_second, %lu background, %lu flush\n",
-               srv_main_1_second_loops, srv_main_sleeps,
-               srv_main_10_second_loops, srv_main_background_loops,
-               srv_main_flush_loops);
+       fprintf(file, "srv_master_thread loops: %lu srv_active, "
+               "%lu srv_shutdown, %lu srv_idle\n",
+               srv_main_active_loops,
+               srv_main_shutdown_loops,
+               srv_main_idle_loops);