BibIndex: refactoring and author parent tokenizer

* Refactoring of BibIndex:
  implements inveniosoftware#1710

* Adds a generic parent tokenizer, useful for the dataset records:
  implements inveniosoftware#1885

* Adds 4 demo records for testing purpose

* Adds (and fixes) tests

More details:

* Refactoring of `task_run_core` in `bibindex_engine.py`: easier to
  follow, moves the decision of which records need to be reindexed to
  the tokenizers

* Fixes bug: the command `bibindex -w [index name] -m [date range]`
  previously was updating the `last_updated` field of the index

* Moves many of the index specific special cases from
  `bibindex_engine.py` to the tokenizers
  (e.g. `if index_name == "author": # add special tokens`)

* Moves some utility functions from `bibindex_engine.py` to
  `bibindex_engine_utils.py`

* Adds tokenizers `BibIndexAbstractParentTokenizer`,
  `BibIndexCanonicalAuthorTokenizer`,
  `BibIndexExactParentAuthorTokenizer`,
  `BibIndexParentAuthorTokenizer`,
  `BibIndexParentCanonicalAuthorTokenizer`

* Adds indexes `simpleauthor`, `canonicalauthor`, `parentauthor`,
  `parentcanonicalauthor`, `exactsimpleauthor`, `exactparentauthor`

* Adds fields `simpleauthor`, `exactsimpleauthor`

* Adds upgrade script for the database changes
  (uses function upgrade_atlantis)

* Transforms `author` and `exactauthor` indexes from regular to
  virtual index

* Adds file `bibindex_engine_tokenizer_regression_tests.py`

* Adds tests for tokenizers, for bibindex CLI, for bibindex utils

* Closes inveniosoftware#1662
  (BibIndex: --reindex should not zero last_updated)

* Edits the commands run by `--load-demo-records` in order to
  reindex the bibauthorid-dependant indexes after the `bibauthorid`
  task (for example `canonicalauthor` and `parentcanonicalauthor`)
1: D400 First line should end with '.', not 's'
1: D200 One-line docstring should not occupy 2 lines
32:1: F401 'BibIndexAuthorTokenizer' imported but unused
35:1: F401 'BibIndexExactAuthorTokenizer' imported but unused
53: D103 Docstring missing
68: D103 Docstring missing
75: D203 Expected 1 blank line *before* class docstring, found 0
75: D400 First line should end with '.', not 'r'
79: D102 Docstring missing
82: D400 First line should end with '.', not 's'
108: D400 First line should end with '.', not 's'
144: D400 First line should end with '.', not 's'
183: D400 First line should end with '.', not 's'
218: D203 Expected 1 blank line *before* class docstring, found 0
218: D400 First line should end with '.', not 'r'
222: D102 Docstring missing
225: D400 First line should end with '.', not '0'
225: D200 One-line docstring should not occupy 2 lines
235: D400 First line should end with '.', not '0'
235: D200 One-line docstring should not occupy 2 lines
245: D400 First line should end with '.', not '2'
245: D200 One-line docstring should not occupy 2 lines
261: D400 First line should end with '.', not '2'
261: D200 One-line docstring should not occupy 2 lines
277: D400 First line should end with '.', not 's'
321: D400 First line should end with '.', not 's'
361: D203 Expected 1 blank line *before* class docstring, found 0
361: D400 First line should end with '.', not 'r'
365: D102 Docstring missing
368: D400 First line should end with '.', not '0'
368: D200 One-line docstring should not occupy 2 lines
378: D400 First line should end with '.', not '0'
378: D200 One-line docstring should not occupy 2 lines
388: D400 First line should end with '.', not '2'
388: D200 One-line docstring should not occupy 2 lines
404: D400 First line should end with '.', not '2'
404: D200 One-line docstring should not occupy 2 lines
420: D400 First line should end with '.', not 's'
464: D400 First line should end with '.', not 's'
504: D203 Expected 1 blank line *before* class docstring, found 0
504: D400 First line should end with '.', not 'r'
508: D102 Docstring missing
511: D400 First line should end with '.', not '0'
511: D200 One-line docstring should not occupy 2 lines
525: D400 First line should end with '.', not '0'
525: D200 One-line docstring should not occupy 2 lines
539: D400 First line should end with '.', not '0'
539: D200 One-line docstring should not occupy 2 lines
549: D400 First line should end with '.', not '0'
549: D200 One-line docstring should not occupy 2 lines
560: D203 Expected 1 blank line *before* class docstring, found 0
560: D400 First line should end with '.', not 'r'
564: D102 Docstring missing
567: D400 First line should end with '.', not '0'
567: D200 One-line docstring should not occupy 2 lines
577: D400 First line should end with '.', not '0'
577: D200 One-line docstring should not occupy 2 lines
587: D400 First line should end with '.', not '2'
587: D200 One-line docstring should not occupy 2 lines
600: D400 First line should end with '.', not '2'
600: D200 One-line docstring should not occupy 2 lines