Add a 'to date' boundary to batch jobs

Currently, the batch jobs have a 'from date' boundary only, which is
incremented each time a new batch job is created.

This may cause an issue when many batch jobs are created and don't have
the time to be processed: the same records will be imported several
times.

Example with 4 batch jobs with an interval of 10 minutes (the 30 seconds
difference is a buffer because Magento may commit a new record 'created_at' with a
delay) :

  Batch job 1 from 2014-07-17 10:00:00
  Batch job 2 from 2014-07-17 10:09:30
  Batch job 3 from 2014-07-17 10:19:00
  Batch job 4 from 2014-07-17 10:28:30

A product A is modified on Magento at 2014-07-17 10:25:00
None of the batch job could been executed so far (maybe an interruption
or a high load).  When the batch job 1 will be processed, it will see
that product A has been modified later than 10:00 so it creates an
import job. Turn of batch job 2, it sees the product modified after
10:10, creates an import job... and so on.

This patch adds a 'to' boundary so the batch jobs become:

  Batch job 1 from 2014-07-17 10:00:00 to 2014-07-17 10:10:00
  Batch job 2 from 2014-07-17 10:09:30 to 2014-07-17 10:19:30
  Batch job 3 from 2014-07-17 10:19:00 to 2014-07-17 10:19:00
  Batch job 4 from 2014-07-17 10:28:30 to 2014-07-17 10:28:30

Thus, in the same situation than before, only the batch job 3 would see
the record.
Use a constant for the Magento datetime format
[FIX] replace 'nltk' use by bs4
Merge pull request #17 from guewen/7.0-add-boundary-to-batch-jobs

Add a 'to date' boundary to batch jobs
Install beautifulsoup4 in .travis.yml
Merge pull request #40 from guewen/bealdav-7-remove-nltk

beautifulsoup with more vegetables
When a sales order is canceled, when one uses the 'New Copy from Quotation' button,
the binding are moved from the old (canceled) order to the new one, so the
synchronizations now happen on the new order.
Correct Python trap with string formatting

It would try to convert the items of a tuple to arguments of the
string formatting, and would raise the following error:

TypeError: not all arguments converted during string formatting