Improve compatilbity layer

Better regular expression extraction should avoid weird stack overflows.
This is fix part of #30
Allow parsing of large chunks of text in EditCommand

Change the regex used in the Add command.
Do not use the valid regex anymore as Java RE is not able to apply it
on more than a few characters, and fallback to a quickest, insecure version
instead...
This *MUST* be reworked in a later version.

This fix is part of #30
[fix #28] Really use URL encoding function

The previous "fix" commit (aa9e9c7fb0f53b304f2df7783ec9e19b971631a7)
added URL encoding handling. However, this function was not called
in one case: when there is a conflict and the server sends back
its version of the document.

In this commit, we:
- Add the missing call.
- Add corresponding unit test.
- Fix encoding function name.

Closes #28
Fix compatibilty layer for `raw' commands

A raw command must contain the new revision of the document.
Improve resource dispatcher mechanism

Following improvements were made:
 - a `ResourceDispatcher` now watches for death its managed actors, this
   enables to cleanup the maps when a managed actor dies,
 - A specific `Stop` message was added which, when sent to a dispatcher,
   is broadcast to all managed actors and then stops the dispatcher.
   This is necessary because the `PoisonPill` message is not sent to the
   `receive` method, even if it is queued as a standard message.
   Managing shutdown of the dispatcher in the `postStop` hook is not as
   flexible as having an explicit custom stop message. Managed actors
   can react to this message and do their own cleanup if necessary,
 - When someone asks to forward a message to some unknown resource, a
   hook method is called with the identifier of the requested unknown
   resource and the message that was meant to be forwarded. Dispatcher
   implementations can choose to deal with those messages as they wish
   (logging, specific answer, ...).
Migrate to new sohva version

This is no simple commit, as sohva changes its Http library in version
1.0.0, and now uses spray and akka. This implies that an `ActorSystem`
must be present when it is instantiated.

Making this change, I discovered that we had a terrible way to deal with
sohva instances and that we actually instantiated an awful lot of them
where only one is actually needed and recommended. That's the reason why
this patch looks quite huge. All `HLet` gained a new parameter which is
the sohva client they can use, instead of creating a new one for each
new `HLet`. No new feature was added, and it is much of a cosmetic
change.

This change also permitted to upgrade the akka version we are using,
which upgraded the version of config and made some deprecation warning
appear. Duration in configuration are now properly handled with the more
flexible `Config.getDuration` method.

Thanks to this change and cleanup , \BlueLaTeX should scale better now.
[imp #23] fix last modification date interface

The server was returning the lastest modification date for all its associated
document.
However, if there was no document opened, this lead to an invalid call to method
List.last().

Now, the last modification date is also stored in the actor itself (we still
keep per document date, as they might be useful), and updated accordingly.
[fix #23] Compile paper only if modified

When compiling a paper, we first check its last modification date set by the
synchronization server. If the document was not modified, there is no need to
re-compile it.

Closes #23