remove obsolete workaround
index-backend: lock mutex when swapping

This was a problem for the first time today in production, so let’s fix
it for good :).
increase file descriptor limit for source-backends
use capnproto instead of JSON between dcs-web and source backends

This reduces the amount of time we need to spend encoding/decoding JSON,
which was one of the bottlenecks.

Also, don’t use the seek syscall for getting the current offset, it is
quite expensive (second function in top5 of a dcs-web profile).
source-backend: remove obsolete /source http handler
dcs-web: link against pprof handlers
use a buffered reader, ReadFromPackedStream() does a lot of reads

…which would directly translate into tons of read() syscalls, which is
pretty expensive.
remove useless code
refactor state so that per-backend state is separate

This allows us to prevent locking the stateMu on every storeResult()
call, as instead each of the storeResult() calls will just write to the
state for the backend it was called for.
store resultPointers instead of entire results, re-use capnproto buffer

The latter requires the former. But since we only ever use the results
to figure out whether a new result is making it to the top10, storing
resultPointers (which require only a copy of the ranking and the path
hash, i.e. one float32 and one uint64) is fine.