Updates doc with new image file and instructions

I built a new, larger virtual machine image file with grub and akaros
preloaded:
http://akaros.cs.berkeley.edu/files/hdd268mb.img

Or follow the updated instructions on how to make your own.  The image
will actually be smaller (in space consumed) if you make it yourself,
and will only grow up to 268MB if you use all of that space.
Fixes bugs with waitpid()

Should return -1 when there are no children; looks like I misread the
man page.  Also, we always return a status (when requested), and not
just for certain results.  Finally, we properly put the return value in
the correct byte.

We still don't do anything with signalling, stopping, etc.
Fixes glibc's errno strings (XCC)

Whenever you change ros/errno.h, you need to rerun the script and
rebuild the glibc.

Rebuild glibc if you want to get proper error messages from calls like
perror().
Provisioning syscall and helper program (XCC)

Basic syscall for resource provisioning.  It only handles cores, does no
permissions checks, and is basically a syscall wrapper around
provision_core().

To use it, check out the test program 'prov'.  For now, it will operate
on a PID like so:

$ prov --help
$ prov -t c -p PID -v 4  (provision pcore 4 to PID)
$ prov -t c -p PID -m    (provision all pcores to PID)
$ prov -s (ghetto interface to tell the kernel to print the prov map)

Reinstall your kernel headers.
Removes side effects from asserts in tests/

We shouldn't have necessary work happen inside assert(), in case we
optimize it later.

Plus we now have potential error messages when pthread_create fails, if
errno was set properly, which it isn't yet.  That's something we need to
fix in pthread code, instead of printing profanities.
64 bit file seeking (XCC)

The kernel now tracks all file offsets as 64 bit values, and the old
lseek syscall is now llseek.  This call can handle 64 bit or 32 bit
offsets on both 64 and 32 bit systems.  It compiles and works on a 32
bit system (I don't have a 64 bit Akaros system to test out the 64 bit
stuff).  The ghetto file_test was updated to do a very basic lseek64 as
well.

glibc's lseek64 now uses the new syscall as well.

Rebuild your cross compiler, and copy-over the lseek files from the -ros
directory (or do a complete make clean).
Fixes bug in sys_symlink

Clearly we should have been using the trusted / memduped strings,
instead of the user strings.  What's more interesting is that this used
to work, but recently page faults.

For those curious, the actual page fault happened a few bytes into
new_path, during link_path_walk().  Checking out 'showmappings' (look at
the page table), the page is mapped, but it is only mapped read-only.
Since the kernel honors read only flags in PTEs (due to the CR0 flag),
the kernel page faulted on an illegal write access on a read-only page.

Now as to why this didn't happen 2.5 years ago, either we've done
something since then to honor read-only mappings of binaries, the
compiler decided to make it read-only, or qemu/kvm wasn't previously
honoring the CR0 flag.
Use EFAULT instead of EINVAL for bad user pointers

And don't reset errno when using the memcpy errno helpers.
libstdc++ doesn't try to call ioctl() (XCC)

showmanyc() should still work via the alternate mechanism (via regular
files).  If it doesn't work, and simply returns 0, I'm not actually sure
what the consequences are, though glibc seems to allow that.

Regarding the ctype files in config/os/ros/, I just grabbed the files
from the generic directory, which were the ones we were using before
this patch (generic is the default).

Rebuild your cross compiler.  Simply making won't suffice, since you
need new config/make files, so either make clean, or rm the gcc
configure files and build directories.
Fixes C++ streams (XCC)

Stream file code under the hood wasn't opening files.  It would call a
few functions, and due to having large file support built in (which we
do want), it would try to call open64, which was not built in glibc due
to the lack of _G_OPEN64.  Conveniently enough, the fopen calls didn't
have stub warnings; they just returned ENOSYS.

Turns out there is a _G_config.h file in sysdeps/gnu/ that I think Linux
uses.  We're now using that same file, with minor changes (no __mremap).

Rebuild your cross compiler (either make clean or copy over the -ros
file).
Adds a C++ stream test and test/ C++ make rules

The stream test is very basic; it was what I used in the previous
commit.

The test infrastructure can now handle C++ files - just drop them in the
tests/ directory and they should make just like the .c files.