Waste less memory on os_event structs

Summary:
This fixes: http://bugs.mysql.com/62535

Allow os_event structs to be packed into their parent structures.

Split memory-management linked-list overhead out of event struct.

Don't allocate linked-list overhead when it won't be used (when packed).

Packed event structures into mutex and rw_lock structures.

Adjust event and fast_mutex counts on exit, since rw_locks are never freed.

Trimmed down some wasted space within the event strutures.

Added macros to access sub-elements in optimized packed values.

Share the pthread mutex and condvar data in a pool for packed events.

Still allocate dedicated pthread data for each non-packed os_event_t.

Added innodb_sync_pool_size sysvar to select pool size (def: 1024).

Memory usage test results (with 54G buffer pool, from 5.6.10):
61510268 KB - Without this change
60266124 KB - With this change
Space savings ~ 1.2 GB

Sysbench results (from 5.6.10):
QPS for 24 cores, 22G database, 1G buffer pool, read-only:
8	16	32	64	128	256	threads
51253	100571	164190	165912	159370	170362	without this change
51717	103426	166108	168247	159133	172756	with this change

Test Plan: Passed all unit tests, including the big and huge stress tests.

Reviewers: rudradevbasak

Reviewed By: rudradevbasak