Moving sequential code to a new directory
Bootstrapping parallel implementation
Using worker threads to process the files

The number of threads is configurable via the nworkers def on core.clj.
The max number of files per sub-index and the initial number of
sub-indices also are configurable via defs on core.clj.

In the future these parameters will be passed via command line.

This patch also introduces two new modules:
  - Engine: Where the stuff happens. All the thread cordination is done
    in this module.

  - Buffer: A read-blocking buffer. If the production is not finished
    yet (see buffer/finish) the reading will block if the buffer is
    empty. If the production is finished and there is no elements in the
    buffer, :nothing will be returned. All methods of this buffer should
    be called inside a transaction.