Bootstrapping parallel implementation
Updating .gitignore
Using TChan instead of TMVar
Removing the threadDelay waiting

To wait until the work is done a semaphore is being used.
The semaphore is incremented when a worker thread finishes
(is killed by the runtime).
s/consumer/processFile/
Naive indexing
Minor style change
Index: Using accumArray on buildQueryIndex

The accumArray function fills the sections with no entry with default
values while the array function leave the gaps with undefined. When we
need to force the array evaluation with deepseq, if there is any
undefined value on the array an exception will be raised.
Performing queries

Some limitations:
    - Just text passage queries are allowed
    - Just one query per execution
    - Using just one subindex
Fix compilation
Perform queries during indexing

The document partitioning approach is being used to process the queries
in parallel with indexing. The global index is divided in sub indices.
Each sub index is will store a subset of the document set. The index
are indexed in parallel and when a sub index finishes its indexing
(the max number of files was indexed on that sub index) the search
thread starts to perform the query on that sub index.
Extract the engine to a separate module
Engine: Change some strict evaluations

1. Using ($!!) instead of deepseq

2. Forcing the evaluation of the ocurrenceMap instead of the newIndex
on the processFile' function. This way avoids unnecessary computation
traversing all the index (some indices already were evaluated). Maybe
next step will be to create a new index using only the occurrences read
from the current file, force its evaluation and then merge with the
index on the buffer to create a new one.

3. Creating the query index on a separate thread. There is no need to
block the file processing thread during the query index creation.
Lexer: Return the number of processed words

This information will be needed to show in the progress indicator.
Showing progress indicator properly

Now all the messages/status that will be printed on the output should
be done through the Logger module.
Scanning the files in a separate thread
Finish the program properly
Show the number of indexed words on the progress indicator
Logger: Minor refactoring
Moving number of files info to the index

Now the Index and QueryIndex types are carrying a new Int which is the
number of files indexed in that particular index.

This information was being tracked by the Engine before this patch.