workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented workqueue

Adapted for 3.4 from lsk-v3.10

Workqueues can be performance or power-oriented. Currently, most
workqueues are
bound to the CPU they were created on. This gives good performance (due
to cache
effects) at the cost of potentially waking up otherwise idle cores (Idle
from
scheduler's perspective. Which may or may not be physically idle) just
to
process some work. To save power, we can allow the work to be
rescheduled on a
core that is already awake.

Workqueues created with the WQ_UNBOUND flag will allow some power
savings.
However, we don't change the default behaviour of the system.  To enable
power-saving behaviour, a new config option CONFIG_WQ_POWER_EFFICIENT
needs to
be turned on. This option can also be overridden by the
workqueue.power_efficient boot parameter.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>