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: D205 Blank line missing between one-line summary and description
1: D208 Docstring is over-indented
4: I102 copyright year is outdated, expected 2014 but got 2013
28:1: F401 'fnmatch' imported but unused
35:6: E126 continuation line over-indented for hanging indent
59:1: E303 too many blank lines (3)
59: D200 One-line docstring should not occupy 3 lines
66: D401 First line should be imperative: 'Return', not 'Returns'
66: D209 Put multi-line docstring closing quotes on separate line
66: D205 Blank line missing between one-line summary and description
66: D208 Docstring is over-indented
82: D401 First line should be imperative: 'Return', not 'Returns'
82: D209 Put multi-line docstring closing quotes on separate line
82: D400 First line should end with '.', not 'e'
82: D205 Blank line missing between one-line summary and description
82: D208 Docstring is over-indented
97: D401 First line should be imperative: 'Return', not 'Returns'
97: D400 First line should end with '.', not 'e'
97: D205 Blank line missing between one-line summary and description
97: D208 Docstring is over-indented
112: D401 First line should be imperative: 'Get', not 'Gets'
112: D209 Put multi-line docstring closing quotes on separate line
112: D400 First line should end with '.', not 'd'
112: D205 Blank line missing between one-line summary and description
112: D208 Docstring is over-indented
125: D401 First line should be imperative: 'Get', not 'Gets'
125: D209 Put multi-line docstring closing quotes on separate line
125: D400 First line should end with '.', not 'd'
125: D205 Blank line missing between one-line summary and description
125: D208 Docstring is over-indented
138: D205 Blank line missing between one-line summary and description
168: D400 First line should end with '.', not 's'
168: D205 Blank line missing between one-line summary and description
168: D208 Docstring is over-indented
179:11: E271 multiple spaces after keyword
185: D401 First line should be imperative: 'Return', not 'Returns'
185: D400 First line should end with '.', not 'e'
193: D401 First line should be imperative: 'Return', not 'Returns'
193: D209 Put multi-line docstring closing quotes on separate line
193: D205 Blank line missing between one-line summary and description
193: D208 Docstring is over-indented
215: D401 First line should be imperative: 'Return', not 'Returns'
224: D401 First line should be imperative: 'Return', not 'Returns'
224: D209 Put multi-line docstring closing quotes on separate line
224: D400 First line should end with '.', not 'h'
224: D205 Blank line missing between one-line summary and description
224: D208 Docstring is over-indented
235: D401 First line should be imperative: 'Check', not 'Checks'
235: D400 First line should end with '.', not 'l'
244:1: E302 expected 2 blank lines, found 1
244: D400 First line should end with '.', not 's'
244: D205 Blank line missing between one-line summary and description
244: D208 Docstring is over-indented
258:1: E302 expected 2 blank lines, found 1
258: D401 First line should be imperative: 'Return', not 'Returns'
258: D205 Blank line missing between one-line summary and description
258: D208 Docstring is over-indented
271: D401 First line should be imperative: 'Return', not 'Returns'
271: D209 Put multi-line docstring closing quotes on separate line
271: D205 Blank line missing between one-line summary and description
271: D208 Docstring is over-indented
284: D401 First line should be imperative: 'Return', not 'Returns'
284: D209 Put multi-line docstring closing quotes on separate line
284: D205 Blank line missing between one-line summary and description
284: D208 Docstring is over-indented
294: D401 First line should be imperative: 'Return', not 'Returns'
294: D400 First line should end with '.', not 's'
294: D205 Blank line missing between one-line summary and description
294: D208 Docstring is over-indented
302:5: F841 local variable 'out' is assigned to but never used
323: D401 First line should be imperative: 'Return', not 'Returns'
323: D209 Put multi-line docstring closing quotes on separate line
323: D400 First line should end with '.', not 'g'
323: D205 Blank line missing between one-line summary and description
323: D208 Docstring is over-indented
328:26: E261 at least two spaces before inline comment
328:27: E262 inline comment should start with '# '
329:26: E261 at least two spaces before inline comment
329:27: E262 inline comment should start with '# '
344:25: E261 at least two spaces before inline comment
344:26: E262 inline comment should start with '# '
364: D401 First line should be imperative: 'Return', not 'Returns'
364: D209 Put multi-line docstring closing quotes on separate line
364: D400 First line should end with '.', not 'g'
364: D205 Blank line missing between one-line summary and description
364: D208 Docstring is over-indented
401: D401 First line should be imperative: 'Return', not 'Returns'
401: D205 Blank line missing between one-line summary and description
401: D208 Docstring is over-indented
439: D401 First line should be imperative: 'Return', not 'Returns'
439: D400 First line should end with '.', not 'd'
451: D401 First line should be imperative: 'Return', not 'Returns'
451: D400 First line should end with '.', not ':'
451: D205 Blank line missing between one-line summary and description
451: D208 Docstring is over-indented
456:10: E225 missing whitespace around operator
461: D401 First line should be imperative: 'Return', not 'Returns'
461: D400 First line should end with '.', not ':'
461: D205 Blank line missing between one-line summary and description
461: D208 Docstring is over-indented
466:10: E225 missing whitespace around operator
474: D401 First line should be imperative: 'Remove', not 'Removes'
474: D205 Blank line missing between one-line summary and description
474: D208 Docstring is over-indented
487: D208 Docstring is over-indented
487: D200 One-line docstring should not occupy 3 lines
501: D401 First line should be imperative: 'Create', not 'Creates'
501: D400 First line should end with '.', not 'd'
501: D205 Blank line missing between one-line summary and description
501: D208 Docstring is over-indented
511: D101 Docstring missing
515: D401 First line should be imperative: 'Return', not 'Returns'
515: D300 Expected """-quotes, got '-quotes
525: D401 First line should be imperative: 'Return', not 'Returns'
525: D400 First line should end with '.', not 'y'
525: D205 Blank line missing between one-line summary and description
525: D208 Docstring is over-indented
536:47: E202 whitespace before ')'
540: D401 First line should be imperative: 'Check', not 'Checks'
540: D400 First line should end with '.', not 't'
543:25: E272 multiple spaces before keyword
550: D401 First line should be imperative: 'Check', not 'Checks'
550: D209 Put multi-line docstring closing quotes on separate line
550: D400 First line should end with '.', not ';'
550: D205 Blank line missing between one-line summary and description
550: D208 Docstring is over-indented
556: D401 First line should be imperative: 'Return', not 'Returns'
556: D209 Put multi-line docstring closing quotes on separate line
556: D400 First line should end with '.', not ';'
556: D205 Blank line missing between one-line summary and description
556: D208 Docstring is over-indented
565: D401 First line should be imperative: 'Find', not 'Finds'
565: D400 First line should end with '.', not 'n'
565: D205 Blank line missing between one-line summary and description
565: D208 Docstring is over-indented
582: D400 First line should end with '.', not 'e'
582: D205 Blank line missing between one-line summary and description
592: D401 First line should be imperative: 'Convert', not 'Converts'
592: D205 Blank line missing between one-line summary and description
617: D401 First line should be imperative: 'Convert', not 'Converts'