[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