Add function that returns the play id given an xml:id

A function was added to emotools.plays that returns a play id given the
xml:id of an element from the FoLiA XML file. This function is used in
the folia2es script.
Add script to store the contents of a FoLiA XML file in ElasticSearch

Added a script that parses a FoLiA XML file containing a play and adding
the contents to an ElasticSearch index. The script extracts the text
(and other metadata) from events and stores each event as a separate
document. The next step is to (also) add entities to the documents.
Also, the script does not yet deal with sub events. This must be fixed.
Update folia2es script to process all files in a directory

The folia2es script was updated to accept a directory name as input
argument (instead of a file name) and process all files in the directory
(instead of the single file). In addition, processed (and unused) xml
elements are deleted, to make the script more memory efficient. The next
step is to properly deal with subevents.
Fix processing subevents

Some events contain subevents. To avoid adding (sub)events multiple
times, the script checks whether some event was already indexed and adds
an event only if it hasn't been added before.
Fix TransportError immediately after creating the index

A TransportError occurs when the script checks for the first time
whether a document exists (after creating the index). Therefore, a two
second delay was added after creating the index. This prevents the error
from occurring.
Fix empty actor error

The extract_character_name function crashes when it is called with an
empty string (or None). Although this is not supposed to happen, it does
happen in some FoLiA XML files. Therefore the function was updated to
return the string 'UNKNOWN' when it is called with an empty string or None.
Fix lxml.etree.XMLSyntaxError

Running the folia2es script resulted in an 'lxml.etree.XMLSyntaxError: ID
XXX already defined' error. The solution (found by googling) is to set
the option huge_tree=True when creating the parser. The error occurs,
because lxml stores the IDs of all elements in some global table and
runs into troubles when the table becomes too big (this also explains
why this problem did not occur for generating the kaf files, because
that was done using a bash script that started python for each folia
file separately). More details about the error:
https://mailman-mail5.webfaction.com/pipermail/lxml/2014-May/007185.html
Fix adding subevents

Despite a previous fix, subevents were still added separately to the
index (and event containing subevents was added and the subevents were
added). This is now fixed: an event is only added to the index, if it is
not a subevent. This means that we assume that subevents are part of the
parent events. If a subevent contains sentences (this is not always the
case), the sentences are added to the parent event.
Add liwc entities to ElasticSearch index

LIWC entities present in the FoLiA XML files are added to the ES index.
At the moment, the name of the entity class to be added (i.e., liwc) is
hard coded. This should be made into an optional parameter.
Rename speaker field to actor

The ES mapping for events contained an (optional) field named 'speaker'
to store the actor attribute in. To be more consistent, the 'speaker'
field was renamed to 'actor'.
Merge branch 'feature/folia2elasticsearch' into develop