Refactor NERAdapter and LinnaeusNERAdapter

NERAdapter has been modified to enforce the necessity of receiving a database
session before trying to annotate any document. That is done by creating two
different states in the Actor: the first one (configuration) just receives a
session and updates its internal implicit var to it and then it changes to the
second one (annotation), which can only receive documents to annotate.

Also, documents must now be wrapped inside an AnnotateDocument object, to allow
more clear and concise code about what the NER Actor actually does, and it will
answer eventually with a FinishedAnnotation or FailedAnnotation object
describing what happened. The FinishedAnnotation response uses the pipe pattern
of Akka (`pipeTo`), which sends back a Future holding that FinishedAnnotation
object. FinishedAnnotation wraps a Document that has been annotated correctly
and FailedAnnotation wraps a Document that has caused an annotation error and a
Throwable object which represents what happened.

Because of the piped Future in the Actor, the annotate method has also been
modified to return a Future[FinishedAnnotation] instead of nothing (Unit).

There are some more minor changes regarding readability of code, naming of
methods and fields and stuff like that; and a AnnotatorBaseSpec class created
that all NERAdapter implementation tests can extend, to allow creating those
Actor tests more easily.