[imp #35] Improved compilation results

When subscribing to the compilation channel of a paper, several things
can happen in return:
 - the compilation succeeded, in which case the server says ok by
   returning `true`
 - the compilation failed, in which case the server returns an error 500
   (Internal Server Error) with the appropriate error object
 - the compilation was not necessary, in which case the server says
   `false` with status 304 (Not Modified)
 - the compilation task was not started (typically, nobody joined the
   paper before registering to this compilation channel), in which case
   the server returns an error 509 (Service Unavailable) with the
   appropriate error object
Merge pull request #54 from satabin/wip-compilation-status

[imp #35] Improved compilation results
Windows doesn't like mapping files into memory

There is no way to close the mapping without calling explicitly the GC
after having nulled all references. So let's use a ByteBuffer instead.
Make path separator system dependent

This is part of windows compatibility in #61
Handle process timeout in scala

`timeout` command under windows does not do what we expected it to do.
Handling it in scala should make the code much more portable.
This is part of ticket #61.