save fpu state/control registers on every context switch

As described in issue #9, we have a dangling problem related to context switch
and some of the FPU state. In a quick summary, the problem arises from the fact
that while the FPU state per se is caller saved, the control registers are
callee saved. This means that threads being voluntarily taken out of the cpu
will have that state broken.

The simplest way to solve this problem is to save / restore those registers at
every context switch. It should not be that expensive, since we're not talking
about the whole FPU state, but rather just a couple of registers. To be sure of
that, I am using misc-ctxt.so, which yields the following numbers:

Base:
OSv v0.12-rc1-21-g8660a6f
eth0: 192.168.122.15
       454 colocated
       704 apart
       546 nopin

Patched:
OSv v0.12-rc1-21-g8660a6f
eth0: 192.168.122.15
       459 colocated
       685 apart
       506 nopin

Signed-off-by: Glauber Costa <glommer@cloudius-systems.com>
Reviewed-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
fpu: enhance test for FPU

The present patch introduces a test case that reproduces the bug described in
issue #9. It only happens in the "yield" case, but for completeness I am
including a test that yield, and a test that does not yield.

Signed-off-by: Glauber Costa <glommer@cloudius-systems.com>
Reviewed-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Avi Kivity <avi@cloudius-systems.com>