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`)
40:1: E303 too many blank lines (3)
40: D203 Expected 1 blank line *before* class docstring, found 0
43: D400 First line should end with '.', not 'n'
49: D400 First line should end with '.', not 'e'
56:1: E303 too many blank lines (3)
56: D203 Expected 1 blank line *before* class docstring, found 0
59: D400 First line should end with '.', not 'd'
64: D400 First line should end with '.', not 'd'
69: D400 First line should end with '.', not 'e'
74: D400 First line should end with '.', not 'e'
77:11: E128 continuation line under-indented for visual indent
80: D203 Expected 1 blank line *before* class docstring, found 0
80: D204 Expected 1 blank line *after* class docstring, found 2
84:5: E303 too many blank lines (2)
84: D400 First line should end with '.', not 'e'
93: D400 First line should end with '.', not 'e'
104: D400 First line should end with '.', not "'"
112: D400 First line should end with '.', not "'"
117:33: E231 missing whitespace after ','
120: D400 First line should end with '.', not 'e'
129: D400 First line should end with '.', not 'e'
138: D400 First line should end with '.', not 'e'
148: D203 Expected 1 blank line *before* class docstring, found 0
151: D400 First line should end with '.', not 't'
159: D400 First line should end with '.', not 'd'
168: D203 Expected 1 blank line *before* class docstring, found 0
171: D400 First line should end with '.', not 'y'
177: D400 First line should end with '.', not 'm'
183: D400 First line should end with '.', not 'd'
189: D400 First line should end with '.', not 'd'
196: D203 Expected 1 blank line *before* class docstring, found 0
199: D400 First line should end with '.', not 'e'
202:32: E231 missing whitespace after ','
205: D400 First line should end with '.', not 'n'
208:32: E231 missing whitespace after ','
211: D400 First line should end with '.', not 'D'
218: D209 Put multi-line docstring closing quotes on separate line
218: D203 Expected 1 blank line *before* class docstring, found 0
218: D400 First line should end with '.', not 'n'
218: D205 Blank line missing between one-line summary and description
218: D208 Docstring is over-indented
223: D102 Docstring missing
224:50: E231 missing whitespace after ':'
224:58: E231 missing whitespace after ':'
225:58: E231 missing whitespace after ':'
226:51: E124 closing bracket does not match visual indentation
227:52: E231 missing whitespace after ':'
228:49: E231 missing whitespace after ':'
229:43: E124 closing bracket does not match visual indentation
232:30: E124 closing bracket does not match visual indentation
234:87: E202 whitespace before '}'
234:37: E231 missing whitespace after ':'
236: D400 First line should end with '.', not 'd'
239:18: E225 missing whitespace around operator
244: D400 First line should end with '.', not 'd'
247:18: E225 missing whitespace around operator
252:5: E303 too many blank lines (2)
252: D400 First line should end with '.', not 'd'
255:18: E225 missing whitespace around operator
260: D203 Expected 1 blank line *before* class docstring, found 0
260: D400 First line should end with '.', not 't'
263: D400 First line should end with '.', not 't'
268: D400 First line should end with '.', not 't'
268: D200 One-line docstring should not occupy 2 lines
292: D400 First line should end with '.', not 't'
292: D200 One-line docstring should not occupy 2 lines
312: D400 First line should end with '.', not 't'
312: D200 One-line docstring should not occupy 2 lines
338: D203 Expected 1 blank line *before* class docstring, found 0
338: D400 First line should end with '.', not 't'
341: D400 First line should end with '.', not 't'
346: D400 First line should end with '.', not 't'
367: D400 First line should end with '.', not 't'
367: D200 One-line docstring should not occupy 2 lines
387: D400 First line should end with '.', not 't'
387: D200 One-line docstring should not occupy 2 lines