sysinfo(): fix stack overwrite

sysinfo() used sizeof(struct sysinfo) to decide how many zeros to write.
The problem is that our struct was much larger than Linux's (we had a much
larger padding at the end), so if we run code compiled on Linux, that code
would allocate a small structure on the stack and then zero a much larger
structure, causing the stack to be corrupted.

Drop the "reserved" field making our structure larger. It's not needed.

Fixes #174.

Tested-by: Amnon Heiman <amnon@cloudius-systems.com>
Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
sysinfo(): Provide some real measurements

sysinfo() until now was a stub. This patches fills some of the information
we can already provide, namely the uptime in seconds (through the recently
added osv::clock::uptime()), the total and free memory (through the recently
added memory::stats::free()/total() functions), and number of processes
(always 1 on OSv).

This patch also changes a couple of types from unsized names (like "unsigned")
to fixed-sized ones (like "u32"), to match the definition of this structure
on Linux. It won't make any difference on x86_64, but perhaps in some future
architecture it will.

Tested-by: Amnon Heiman <amnon@cloudius-systems.com>
Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>