backport rwsem from Linux 3.11

Change-Id: I00a04b8b11b184803a1a6a3aeb8a066769bf09c4

Conflicts:
	include/linux/rwsem.h
	kernel/rwsem.c
	lib/rwsem-spinlock.c
Port timer and workqueue from android-msm-mako-3.4-jb-mr2

Change-Id: I4a0a08eee738d5e972b867fe888a75cce39820f6

Conflicts:
	drivers/cpufreq/cpufreq_governor.c

Conflicts:
	drivers/input/lid.c
	drivers/power/smb347-charger.c
	include/linux/workqueue.h
	kernel/timer.c
	kernel/workqueue.c