idle: enable interrupts before idling

Users are *still* reporting executing __idle() with interrupts disabled,
which ultimately leads to a hang. Just enable them explicitly before
idling.

Cc: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
idle: Consolidate idle implementations

Duplicate code is bad. Move all the idle code to C and delete the old
assembly stuff.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Merge branch 'idle' into elflink