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: D205 Blank line missing between one-line summary and description
21: I102 copyright year is outdated, expected 2014 but got 2013
31:1: F401 'fnmatch' imported but unused
50:1: F401 'CFG_BIBAUTHORITY_CONTROLLED_FIELDS_BIBLIOGRAPHIC' imported but unused
52:1: F401 'search_unit_in_bibrec' imported but unused
53:6: E126 continuation line over-indented for hanging indent
58:6: E126 continuation line over-indented for hanging indent
66:1: F401 'CFG_JOURNAL_PUBINFO_STANDARD_FORM_REGEXP_CHECK' imported but unused
66:1: F401 'CFG_JOURNAL_PUBINFO_STANDARD_FORM' imported but unused
66:1: F401 'CFG_JOURNAL_TAG' imported but unused
70:1: F401 'get_nonmarc_tag_indexes' imported but unused
70:1: F401 'get_field_tags' imported but unused
70:1: F401 'get_all_index_names_and_column_values' imported but unused
70:1: F401 'get_marc_tag_indexes' imported but unused
70:1: F401 'get_min_last_updated' imported but unused
70:1: F401 'recognize_marc_tag' imported but unused
113:17: E261 at least two spaces before inline comment
114:25: E261 at least two spaces before inline comment
121: D401 First line should be imperative: 'Return', not 'Returns'
130: D400 First line should end with '.', not 'n'
130: D205 Blank line missing between one-line summary and description
130: D208 Docstring is over-indented
145:66: E502 the backslash is redundant between brackets
150: D400 First line should end with '.', not 'd'
150: D205 Blank line missing between one-line summary and description
179:1: F999 redefinition of unused 'get_author_canonical_ids_for_recid' from line 70
179: D400 First line should end with '.', not 'e'
179: D205 Blank line missing between one-line summary and description
199: D209 Put multi-line docstring closing quotes on separate line
199: D205 Blank line missing between one-line summary and description
202:53: E502 the backslash is redundant between brackets
225:67: E225 missing whitespace around operator
226:30: E124 closing bracket does not match visual indentation
226:31: E261 at least two spaces before inline comment
235:33: E261 at least two spaces before inline comment
247:33: E261 at least two spaces before inline comment
258:33: E261 at least two spaces before inline comment
270:33: E261 at least two spaces before inline comment
281:33: E261 at least two spaces before inline comment
293:33: E261 at least two spaces before inline comment
303: D401 First line should be imperative: 'Remove', not 'Removes'
303: D300 Expected """-quotes, got '-quotes
308: D401 First line should be imperative: 'Return', not 'Returns'
308: D400 First line should end with '.', not 'e'
308: D205 Blank line missing between one-line summary and description
308: D208 Docstring is over-indented
319:68: E502 the backslash is redundant between brackets
327: D401 First line should be imperative: 'Check', not 'Checks'
327: D205 Blank line missing between one-line summary and description
327: D208 Docstring is over-indented
348: D401 First line should be imperative: 'Return', not 'Returns'
348: D400 First line should end with '.', not 's'
350:10: E225 missing whitespace around operator
365:56: E261 at least two spaces before inline comment
373: D400 First line should end with '.', not 's'
373: D205 Blank line missing between one-line summary and description
384:70: E502 the backslash is redundant between brackets
385:32: E127 continuation line over-indented for visual indent
389: D401 First line should be imperative: 'Return', not 'Returns'
389: D400 First line should end with '.', not 'e'
389: D300 Expected """-quotes, got '-quotes
402: D401 First line should be imperative: 'Return', not 'Returns'
402: D400 First line should end with '.', not 't'
424:74: E502 the backslash is redundant between brackets
428:52: E261 at least two spaces before inline comment
429:52: E261 at least two spaces before inline comment
430:54: E261 at least two spaces before inline comment
431:54: E261 at least two spaces before inline comment
434: D205 Blank line missing between one-line summary and description
434: D208 Docstring is over-indented
444:70: E502 the backslash is redundant between brackets
450: D400 First line should end with '.', not 'd'
460: D400 First line should end with '.', not 'd'
460: D205 Blank line missing between one-line summary and description
460: D208 Docstring is over-indented
510: D401 First line should be imperative: 'Split', not 'Splits'
510: D400 First line should end with '.', not 's'
510: D205 Blank line missing between one-line summary and description
510: D208 Docstring is over-indented
520:15: E711 comparison to None should be 'if cond is None:'
531: D203 Expected 1 blank line *before* class docstring, found 0
531: D205 Blank line missing between one-line summary and description
531: D208 Docstring is over-indented
550: D102 Docstring missing
555:65: E502 the backslash is redundant between brackets
556:49: E128 continuation line under-indented for visual indent
556:57: E502 the backslash is redundant between brackets
557:49: E128 continuation line under-indented for visual indent
557:62: E502 the backslash is redundant between brackets
558:49: E128 continuation line under-indented for visual indent
561:24: E261 at least two spaces before inline comment
564: D401 First line should be imperative: 'Update', not 'Updates'
564: D400 First line should end with '.', not 'B'
564: D205 Blank line missing between one-line summary and description
564: D208 Docstring is over-indented
569:57: E502 the backslash is redundant between brackets
571:64: E502 the backslash is redundant between brackets
573:62: E502 the backslash is redundant between brackets
574:23: E128 continuation line under-indented for visual indent
593:63: E502 the backslash is redundant between brackets
596:73: E502 the backslash is redundant between brackets
601:62: E502 the backslash is redundant between brackets
615:65: E502 the backslash is redundant between brackets
627:75: E502 the backslash is redundant between brackets
633:55: E502 the backslash is redundant between brackets
635:54: E502 the backslash is redundant between brackets
636:23: E128 continuation line under-indented for visual indent
638: D400 First line should end with '.', not 'y'
640:9: F999 redefinition of unused 'set' from line 103
641:28: E261 at least two spaces before inline comment
645:74: E502 the backslash is redundant between brackets
649:74: E502 the backslash is redundant between brackets
651:134: E261 at least two spaces before inline comment
653:14: E261 at least two spaces before inline comment
654:70: E502 the backslash is redundant between brackets
656:13: F999 redefinition of unused 'set' from line 103
658:142: E261 at least two spaces before inline comment
664:20: E261 at least two spaces before inline comment
665:104: E261 at least two spaces before inline comment
667: D401 First line should be imperative: 'Keep', not 'Keeps'
667: D400 First line should end with '.', not 'g'
667: D205 Blank line missing between one-line summary and description
667: D208 Docstring is over-indented
682:21: W601 .has_key() is deprecated, use 'in'
688:98: E502 the backslash is redundant between brackets
700: D400 First line should end with '.', not 'y'
700: D205 Blank line missing between one-line summary and description
714: D401 First line should be imperative: 'Clean', not 'Cleans'
714: D300 Expected """-quotes, got '-quotes
719: D203 Expected 1 blank line *before* class docstring, found 0
719: D205 Blank line missing between one-line summary and description
719: D208 Docstring is over-indented
735: D401 First line should be imperative: 'Create', not 'Creates'
735: D205 Blank line missing between one-line summary and description
735: D208 Docstring is over-indented
744:43: E127 continuation line over-indented for visual indent
745:43: E127 continuation line over-indented for visual indent
746:43: E127 continuation line over-indented for visual indent
750: D401 First line should be imperative: 'Set', not 'Sets'
750: D400 First line should end with '.', not 'l'
750: D205 Blank line missing between one-line summary and description
750: D208 Docstring is over-indented
758: D205 Blank line missing between one-line summary and description
758: D208 Docstring is over-indented
777:85: E502 the backslash is redundant between brackets
799:28: E126 continuation line over-indented for hanging indent
802:87: E502 the backslash is redundant between brackets
832: D401 First line should be imperative: 'Retrieve', not 'Retrieves'
832: D202 No blank lines allowed *after* method docstring, found 1
832: D400 First line should end with '.', not 'x'
832: D205 Blank line missing between one-line summary and description
832: D208 Docstring is over-indented
852: D401 First line should be imperative: 'Retrieve', not 'Retrieves'
852: D202 No blank lines allowed *after* method docstring, found 1
852: D400 First line should end with '.', not 'x'
852: D205 Blank line missing between one-line summary and description
852: D208 Docstring is over-indented
872: D401 First line should be imperative: 'Update', not 'Updates'
872: D400 First line should end with '.', not ':'
872: D205 Blank line missing between one-line summary and description
872: D208 Docstring is over-indented
902:55: E502 the backslash is redundant between brackets
903:24: E127 continuation line over-indented for visual indent
904:24: E127 continuation line over-indented for visual indent
904:69: E261 at least two spaces before inline comment
906:174: E261 at least two spaces before inline comment
910: D401 First line should be imperative: 'Insert', not 'Inserts'
910: D400 First line should end with '.', not 'e'
910: D205 Blank line missing between one-line summary and description
910: D208 Docstring is over-indented
938:179: E261 at least two spaces before inline comment
940:174: E261 at least two spaces before inline comment
944: D401 First line should be imperative: 'Remove', not 'Removes'
944: D400 First line should end with '.', not 'd'
944: D205 Blank line missing between one-line summary and description
944: D208 Docstring is over-indented
969:179: E261 at least two spaces before inline comment
971:174: E261 at least two spaces before inline comment
975: D401 First line should be imperative: 'Update', not 'Updates'
975: D400 First line should end with '.', not 'o'
975: D205 Blank line missing between one-line summary and description
975: D208 Docstring is over-indented
1014: D401 First line should be imperative: 'Update', not 'Updates'
1014: D205 Blank line missing between one-line summary and description
1014: D208 Docstring is over-indented
1029: D401 First line should be imperative: 'Update', not 'Updates'
1029: D400 First line should end with '.', not 'd'
1029: D205 Blank line missing between one-line summary and description
1029: D208 Docstring is over-indented
1057: D401 First line should be imperative: 'Remove', not 'Removes'
1057: D400 First line should end with '.', not 'e'
1064: D401 First line should be imperative: 'Clean', not 'Cleans'
1064: D400 First line should end with '.', not ')'
1064: D205 Blank line missing between one-line summary and description
1064: D208 Docstring is over-indented
1071:18: E127 continuation line over-indented for visual indent
1075: D401 First line should be imperative: 'Remove', not 'Removes'
1075: D400 First line should end with '.', not ')'
1075: D205 Blank line missing between one-line summary and description
1075: D208 Docstring is over-indented
1092:5: E303 too many blank lines (2)
1092: D401 First line should be imperative: 'Remove', not 'Removes'
1092: D205 Blank line missing between one-line summary and description
1092: D208 Docstring is over-indented
1130: D203 Expected 1 blank line *before* class docstring, found 0
1130: D400 First line should end with '.', not 'x'
1130: D205 Blank line missing between one-line summary and description
1130: D208 Docstring is over-indented
1141: D401 First line should be imperative: 'Create', not 'Creates'
1141: D205 Blank line missing between one-line summary and description
1182: D401 First line should be imperative: 'Fill', not 'Fills'
1182: D400 First line should end with '.', not 'h'
1182: D205 Blank line missing between one-line summary and description
1182: D208 Docstring is over-indented
1205: D401 First line should be imperative: 'Prevent', not 'Prevents'
1205: D208 Docstring is over-indented
1205: D200 One-line docstring should not occupy 3 lines
1211: D401 First line should be imperative: 'Turn', not 'Turns'
1211: D208 Docstring is over-indented
1211: D200 One-line docstring should not occupy 3 lines
1217: D401 First line should be imperative: 'Return', not 'Returns'
1217: D209 Put multi-line docstring closing quotes on separate line
1217: D202 No blank lines allowed *after* method docstring, found 1
1217: D400 First line should end with '.', not 'e'
1217: D205 Blank line missing between one-line summary and description
1217: D208 Docstring is over-indented
1232: D401 First line should be imperative: 'Inform', not 'Informs'
1232: D205 Blank line missing between one-line summary and description
1232: D208 Docstring is over-indented
1252: D401 First line should be imperative: 'Display', not 'Displays'
1252: D300 Expected """-quotes, got '-quotes
1259: D401 First line should be imperative: 'Return', not 'Returns'
1259: D300 Expected """-quotes, got '-quotes
1263: D401 First line should be imperative: 'Print', not 'Prints'
1263: D300 Expected """-quotes, got '-quotes
1267: D202 No blank lines allowed *after* method docstring, found 1
1267: D300 Expected """-quotes, got '-quotes
1279:22: W601 .has_key() is deprecated, use 'in'
1280:62: E502 the backslash is redundant between brackets
1281:17: E128 continuation line under-indented for visual indent
1283:75: E502 the backslash is redundant between brackets
1284:31: E127 continuation line over-indented for visual indent
1286: D401 First line should be imperative: 'Fetche', not 'Fetches'
1286: D400 First line should end with '.', not 's'
1286: D205 Blank line missing between one-line summary and description
1299:35: E261 at least two spaces before inline comment
1316:73: E502 the backslash is redundant between brackets
1317:25: E128 continuation line under-indented for visual indent
1327:73: E502 the backslash is redundant between brackets
1328:25: E128 continuation line under-indented for visual indent
1358:29: W601 .has_key() is deprecated, use 'in'
1383:24: W601 .has_key() is deprecated, use 'in'
1384:31: E701 multiple statements on one line (colon)
1405:27: E701 multiple statements on one line (colon)
1408:184: E261 at least two spaces before inline comment
1411:179: E261 at least two spaces before inline comment
1423: D401 First line should be imperative: 'Divide', not 'Divides'
1423: D209 Put multi-line docstring closing quotes on separate line
1423: D400 First line should end with '.', not ','
1423: D205 Blank line missing between one-line summary and description
1423: D208 Docstring is over-indented
1445: D209 Put multi-line docstring closing quotes on separate line
1445: D205 Blank line missing between one-line summary and description
1456:81: E502 the backslash is redundant between brackets
1457:17: E128 continuation line under-indented for visual indent
1460:63: E502 the backslash is redundant between brackets
1461:21: E128 continuation line under-indented for visual indent
1463: D401 First line should be imperative: 'Keep', not 'Keeps'
1463: D400 First line should end with '.', not 'g'
1463: D205 Blank line missing between one-line summary and description
1463: D208 Docstring is over-indented
1478:21: W601 .has_key() is deprecated, use 'in'
1487:5: E303 too many blank lines (2)
1487: D401 First line should be imperative: 'Fetche', not 'Fetches'
1487: D400 First line should end with '.', not 's'
1487: D205 Blank line missing between one-line summary and description
1503: D401 First line should be imperative: 'Delete', not 'Deletes'
1503: D209 Put multi-line docstring closing quotes on separate line
1503: D400 First line should end with '.', not 'w'
1503: D205 Blank line missing between one-line summary and description
1503: D208 Docstring is over-indented
1506:82: E502 the backslash is redundant between brackets
1507:17: E128 continuation line under-indented for visual indent
1517:80: E502 the backslash is redundant between brackets
1518:17: E128 continuation line under-indented for visual indent
1520: D401 First line should be imperative: 'Find', not 'Finds'
1520: D200 One-line docstring should not occupy 3 lines
1529: D400 First line should end with '.', not 'r'
1529: D205 Blank line missing between one-line summary and description
1553: D400 First line should end with '.', not 'e'
1571:35: E261 at least two spaces before inline comment
1602: D400 First line should end with '.', not 'e'
1610:19: E261 at least two spaces before inline comment
1615:17: E127 continuation line over-indented for visual indent
1620: D202 No blank lines allowed *after* method docstring, found 1
1620: D400 First line should end with '.', not 'y'
1620: D205 Blank line missing between one-line summary and description
1640:25: W601 .has_key() is deprecated, use 'in'
1644:15: E261 at least two spaces before inline comment
1646:16: E713 test for membership should be 'not in'
1659:49: E713 test for membership should be 'not in'
1679:29: E128 continuation line under-indented for visual indent
1680:33: E128 continuation line under-indented for visual indent
1685:21: E126 continuation line over-indented for hanging indent
1696:13: E128 continuation line under-indented for visual indent
1697:13: E128 continuation line under-indented for visual indent
1720:13: E128 continuation line under-indented for visual indent
1721:13: E128 continuation line under-indented for visual indent
1737:13: E126 continuation line over-indented for hanging indent
1743: D202 No blank lines allowed *after* function docstring, found 1
1802: D400 First line should end with '.', not 'e'
1802: D205 Blank line missing between one-line summary and description
1838:78: E502 the backslash is redundant between brackets
1839:17: E128 continuation line under-indented for visual indent
1853:1: E302 expected 2 blank lines, found 1
1860: D401 First line should be imperative: 'Get', not 'Gets'
1860: D400 First line should end with '.', not 'e'
1860: D205 Blank line missing between one-line summary and description
1860: D208 Docstring is over-indented
1878: D401 First line should be imperative: 'Remove', not 'Removes'
1878: D205 Blank line missing between one-line summary and description
1878: D208 Docstring is over-indented
1902: D401 First line should be imperative: 'Decide', not 'Decides'
1902: D205 Blank line missing between one-line summary and description
1902: D208 Docstring is over-indented
1911: D205 Blank line missing between one-line summary and description
1911: D208 Docstring is over-indented
1944: D401 First line should be imperative: 'Get', not 'Gets'
1944: D400 First line should end with '.', not 'n'
1944: D205 Blank line missing between one-line summary and description
1944: D208 Docstring is over-indented
1961: D401 First line should be imperative: 'Get', not 'Gets'
1961: D400 First line should end with '.', not 't'
1961: D205 Blank line missing between one-line summary and description
1961: D208 Docstring is over-indented
1984: D401 First line should be imperative: 'Call', not 'Calls'
1984: D400 First line should end with '.', not ','
1984: D205 Blank line missing between one-line summary and description
1984: D208 Docstring is over-indented
2042: D401 First line should be imperative: 'Run', not 'Runs'
2042: D205 Blank line missing between one-line summary and description
2042: D208 Docstring is over-indented