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: D200 One-line docstring should not occupy 3 lines
4: I102 copyright year is outdated, expected 2014 but got 2012
27:6: E126 continuation line over-indented for hanging indent
32:5: F401 'pyRXP' imported but unused
38:5: F401 'etree' imported but unused
44:5: F401 'Ft' imported but unused
51:5: F401 'xml' imported but unused
56:1: E302 expected 2 blank lines, found 1
56: D203 Expected 1 blank line *before* class docstring, found 0
56: D400 First line should end with '.', not 't'
59: D400 First line should end with '.', not 'f'
66: D400 First line should end with '.', not 'd'
70: D400 First line should end with '.', not 'd'
90:16: E713 test for membership should be 'not in'
94: D400 First line should end with '.', not 'd'
116: D400 First line should end with '.', not 'n'
132:1: E302 expected 2 blank lines, found 1
132: D203 Expected 1 blank line *before* class docstring, found 0
132: D400 First line should end with '.', not 's'
135: D400 First line should end with '.', not 'f'
155: D400 First line should end with '.', not 'P'
161: D400 First line should end with '.', not 'l'
167: D400 First line should end with '.', not 'e'
173: D400 First line should end with '.', not 'm'
178:1: E302 expected 2 blank lines, found 1
178: D101 Docstring missing
179: D400 First line should end with '.', not ')'
238: D203 Expected 1 blank line *before* class docstring, found 0
238: D204 Expected 1 blank line *after* class docstring, found 0
238: D400 First line should end with '.', not 't'
240: D400 First line should end with '.', not 'n'
248: D301 Use r""" if any backslashes in a docstring
248: D400 First line should end with '.', not "'"
266:13: E225 missing whitespace around operator
269:34: E225 missing whitespace around operator
273: D301 Use r""" if any backslashes in a docstring
273: D400 First line should end with '.', not '"'
294:34: E225 missing whitespace around operator
298: D400 First line should end with '.', not 'd'
318:34: E225 missing whitespace around operator
322: D301 Use r""" if any backslashes in a docstring
322: D400 First line should end with '.', not '"'
342:35: E225 missing whitespace around operator
346:1: E302 expected 2 blank lines, found 1
346: D203 Expected 1 blank line *before* class docstring, found 0
346: D400 First line should end with '.', not 's'
349: D400 First line should end with '.', not 'f'
372: D400 First line should end with '.', not 's'
381:1: E302 expected 2 blank lines, found 1
381: D203 Expected 1 blank line *before* class docstring, found 0
381: D400 First line should end with '.', not 's'
384: D400 First line should end with '.', not 'f'
417: D400 First line should end with '.', not 's'
422:25: E128 continuation line under-indented for visual indent
422:492: E231 missing whitespace after ','
424: D400 First line should end with '.', not 's'
431: D400 First line should end with '.', not 'e'
438: D400 First line should end with '.', not 's'
444: D400 First line should end with '.', not 's'
455:29: E231 missing whitespace after ','
460: D203 Expected 1 blank line *before* class docstring, found 0
460: D400 First line should end with '.', not 's'
463: D400 First line should end with '.', not 'f'
495: D400 First line should end with '.', not 's'
514: D400 First line should end with '.', not 's'
529:25: E128 continuation line under-indented for visual indent
565: D400 First line should end with '.', not 'g'
572: D400 First line should end with '.', not 'g'
583: D400 First line should end with '.', not 'g'
592: D400 First line should end with '.', not 's'
639:1: E302 expected 2 blank lines, found 1
639: D203 Expected 1 blank line *before* class docstring, found 0
639: D400 First line should end with '.', not 'd'
642: D400 First line should end with '.', not 'f'
667: D400 First line should end with '.', not 'd'
670:53: E128 continuation line under-indented for visual indent
672:53: E128 continuation line under-indented for visual indent
680: D400 First line should end with '.', not 'd'
683:53: E128 continuation line under-indented for visual indent
685:53: E128 continuation line under-indented for visual indent
685:63: E251 unexpected spaces around keyword / parameter equals
693: D400 First line should end with '.', not 'n'
696:53: E128 continuation line under-indented for visual indent
697:53: E128 continuation line under-indented for visual indent
699:53: E128 continuation line under-indented for visual indent
700:53: E128 continuation line under-indented for visual indent
704: D400 First line should end with '.', not 'n'
707:13: E128 continuation line under-indented for visual indent
709:13: E128 continuation line under-indented for visual indent
713: D400 First line should end with '.', not 'n'
716:14: E128 continuation line under-indented for visual indent
718:14: E128 continuation line under-indented for visual indent
719:14: E126 continuation line over-indented for hanging indent
723:1: E302 expected 2 blank lines, found 1
723: D203 Expected 1 blank line *before* class docstring, found 0
723: D400 First line should end with '.', not 's'
726: D400 First line should end with '.', not 'f'
747: D400 First line should end with '.', not 's'
751:13: E128 continuation line under-indented for visual indent
753:13: E128 continuation line under-indented for visual indent
755: D400 First line should end with '.', not 'x'
758:13: E128 continuation line under-indented for visual indent
762:13: E128 continuation line under-indented for visual indent
764:13: E128 continuation line under-indented for visual indent
766: D400 First line should end with '.', not 'x'
769:13: E128 continuation line under-indented for visual indent
771:13: E128 continuation line under-indented for visual indent
774:13: E128 continuation line under-indented for visual indent
776:13: E128 continuation line under-indented for visual indent
778:13: E128 continuation line under-indented for visual indent
780: D400 First line should end with '.', not 's'
784:13: E128 continuation line under-indented for visual indent
786:13: E128 continuation line under-indented for visual indent
788:13: E128 continuation line under-indented for visual indent
790:13: E128 continuation line under-indented for visual indent
792:1: E302 expected 2 blank lines, found 1
792: D203 Expected 1 blank line *before* class docstring, found 0
792: D400 First line should end with '.', not 'n'
795: D400 First line should end with '.', not 'f'
826: D400 First line should end with '.', not 'd'
836: D400 First line should end with '.', not 'd'
854: D400 First line should end with '.', not 'd'
857:53: E128 continuation line under-indented for visual indent
865:53: E128 continuation line under-indented for visual indent
871: D203 Expected 1 blank line *before* class docstring, found 0
871: D400 First line should end with '.', not 'n'
874: D400 First line should end with '.', not 'f'
899: D400 First line should end with '.', not 'n'
904:29: W601 .has_key() is deprecated, use 'in'
907:29: W601 .has_key() is deprecated, use 'in'
915: D203 Expected 1 blank line *before* class docstring, found 0
915: D400 First line should end with '.', not 'n'
918: D400 First line should end with '.', not 'f'
940: D400 First line should end with '.', not 'n'
943:13: E128 continuation line under-indented for visual indent
947:13: E128 continuation line under-indented for visual indent
949:13: E128 continuation line under-indented for visual indent
951:13: E128 continuation line under-indented for visual indent
953:13: E128 continuation line under-indented for visual indent
958:13: E128 continuation line under-indented for visual indent
959:13: E128 continuation line under-indented for visual indent
961:13: E128 continuation line under-indented for visual indent
962:13: E128 continuation line under-indented for visual indent
965: D203 Expected 1 blank line *before* class docstring, found 0
965: D400 First line should end with '.', not 'n'
968: D400 First line should end with '.', not 'f'
986: D400 First line should end with '.', not 'd'
989:13: E128 continuation line under-indented for visual indent
991:13: E128 continuation line under-indented for visual indent
997:13: E128 continuation line under-indented for visual indent
998:13: E128 continuation line under-indented for visual indent
1000:13: E128 continuation line under-indented for visual indent
1001:13: E128 continuation line under-indented for visual indent
1003:13: E128 continuation line under-indented for visual indent
1004:13: E128 continuation line under-indented for visual indent
1009: D203 Expected 1 blank line *before* class docstring, found 0
1009: D400 First line should end with '.', not 'n'
1012: D400 First line should end with '.', not 'f'
1035: D400 First line should end with '.', not 'd'
1038:13: E128 continuation line under-indented for visual indent
1040:13: E128 continuation line under-indented for visual indent
1045:13: E128 continuation line under-indented for visual indent
1046:13: E128 continuation line under-indented for visual indent
1048:13: E128 continuation line under-indented for visual indent
1049:13: E128 continuation line under-indented for visual indent
1051:13: E128 continuation line under-indented for visual indent
1052:13: E128 continuation line under-indented for visual indent
1054:1: E302 expected 2 blank lines, found 1
1054: D203 Expected 1 blank line *before* class docstring, found 0
1054: D400 First line should end with '.', not 'n'
1057: D400 First line should end with '.', not 'f'
1080: D400 First line should end with '.', not 'n'
1083:13: E128 continuation line under-indented for visual indent
1087:13: E128 continuation line under-indented for visual indent
1091:13: E128 continuation line under-indented for visual indent
1096:13: E128 continuation line under-indented for visual indent
1097:13: E128 continuation line under-indented for visual indent
1099:13: E128 continuation line under-indented for visual indent
1100:13: E128 continuation line under-indented for visual indent
1102:13: E128 continuation line under-indented for visual indent
1103:13: E128 continuation line under-indented for visual indent
1106: D203 Expected 1 blank line *before* class docstring, found 0
1106: D400 First line should end with '.', not 'n'
1109: D400 First line should end with '.', not 'f'
1139: D400 First line should end with '.', not 'e'
1144:58: E261 at least two spaces before inline comment
1149: D400 First line should end with '.', not 't'
1158: D400 First line should end with '.', not 'd'
1164: D400 First line should end with '.', not 'a'
1171: D400 First line should end with '.', not 't'
1192: D203 Expected 1 blank line *before* class docstring, found 0
1192: D400 First line should end with '.', not 'g'
1195: D400 First line should end with '.', not 'f'
1217: D400 First line should end with '.', not 's'
1220:13: E128 continuation line under-indented for visual indent
1222:13: E128 continuation line under-indented for visual indent
1224:13: E128 continuation line under-indented for visual indent
1229:13: E128 continuation line under-indented for visual indent
1230:13: E128 continuation line under-indented for visual indent
1232:13: E128 continuation line under-indented for visual indent
1233:13: E128 continuation line under-indented for visual indent
1235:13: E128 continuation line under-indented for visual indent
1236:13: E128 continuation line under-indented for visual indent
1239: D203 Expected 1 blank line *before* class docstring, found 0
1239: D400 First line should end with '.', not '-'
1241:1: W293 blank line contains whitespace
1242: D400 First line should end with '.', not 'f'
1266: D102 Docstring missing
1274: D102 Docstring missing
1276:13: E128 continuation line under-indented for visual indent
1278:13: E128 continuation line under-indented for visual indent
1280:13: E128 continuation line under-indented for visual indent
1282:13: E128 continuation line under-indented for visual indent
1284:13: E128 continuation line under-indented for visual indent
1286: D102 Docstring missing
1288:13: E128 continuation line under-indented for visual indent
1290:13: E128 continuation line under-indented for visual indent
1292:13: E128 continuation line under-indented for visual indent
1293:13: E128 continuation line under-indented for visual indent
1295: D102 Docstring missing
1297:13: E128 continuation line under-indented for visual indent
1299:13: E128 continuation line under-indented for visual indent
1300:17: E128 continuation line under-indented for visual indent
1303: D203 Expected 1 blank line *before* class docstring, found 0
1303: D400 First line should end with '.', not ')'
1306: D400 First line should end with '.', not 's'
1345: D400 First line should end with '.', not 'n'
1359: D400 First line should end with '.', not 'f'
1373: D400 First line should end with '.', not 'n'
1385: D400 First line should end with '.', not 'f'
1397: D400 First line should end with '.', not 'n'
1416: D400 First line should end with '.', not 'f'
1432: D203 Expected 1 blank line *before* class docstring, found 0
1432: D400 First line should end with '.', not 'd'
1435: D400 First line should end with '.', not 'f'
1496: D400 First line should end with '.', not 't'
1504:1: E302 expected 2 blank lines, found 1
1504: D203 Expected 1 blank line *before* class docstring, found 0
1504: D400 First line should end with '.', not 'd'
1507: D400 First line should end with '.', not 'd'
1511:13: E128 continuation line under-indented for visual indent
1513: D400 First line should end with '.', not 'd'
1517:13: E128 continuation line under-indented for visual indent
1519:13: E128 continuation line under-indented for visual indent
1521:13: E128 continuation line under-indented for visual indent
1523:13: E128 continuation line under-indented for visual indent
1526:13: E128 continuation line under-indented for visual indent
1528:13: E128 continuation line under-indented for visual indent
1531:13: E128 continuation line under-indented for visual indent
1534:13: E128 continuation line under-indented for visual indent
1536: D400 First line should end with '.', not 's'
1542:13: E128 continuation line under-indented for visual indent
1544:13: E128 continuation line under-indented for visual indent
1550:13: E128 continuation line under-indented for visual indent
1552:13: E128 continuation line under-indented for visual indent
1558:13: E128 continuation line under-indented for visual indent
1560:13: E128 continuation line under-indented for visual indent
1562:1: E302 expected 2 blank lines, found 1
1562: D203 Expected 1 blank line *before* class docstring, found 0
1562: D400 First line should end with '.', not 'd'
1565: D400 First line should end with '.', not 'f'
1567:9: F999 redefinition of unused 'xml' from line 51
1587: D400 First line should end with '.', not 't'
1590:13: E128 continuation line under-indented for visual indent
1591:13: E128 continuation line under-indented for visual indent
1593:13: E128 continuation line under-indented for visual indent
1594:13: E128 continuation line under-indented for visual indent
1596:13: E128 continuation line under-indented for visual indent
1597:13: E128 continuation line under-indented for visual indent
1599: D400 First line should end with '.', not 'e'
1602:13: E128 continuation line under-indented for visual indent
1603:13: E128 continuation line under-indented for visual indent
1605:13: E128 continuation line under-indented for visual indent
1606:13: E128 continuation line under-indented for visual indent
1608:13: E128 continuation line under-indented for visual indent
1609:13: E128 continuation line under-indented for visual indent
1611:1: E302 expected 2 blank lines, found 1
1611: D203 Expected 1 blank line *before* class docstring, found 0
1611: D400 First line should end with '.', not 'l'
1614: D400 First line should end with '.', not 'f'
1637: D400 First line should end with '.', not 'm'
1645: D400 First line should end with '.', not 'e'
1653: D400 First line should end with '.', not 'p'
1661: D400 First line should end with '.', not 'l'
1668:1: E302 expected 2 blank lines, found 1
1668: D203 Expected 1 blank line *before* class docstring, found 0
1668: D400 First line should end with '.', not 'n'
1671: D400 First line should end with '.', not 'f'
1683:78: E231 missing whitespace after ','
1687: D400 First line should end with '.', not 'm'
1694: D400 First line should end with '.', not 'e'
1701: D400 First line should end with '.', not ')'
1719: D400 First line should end with '.', not 'l'
1725:1: E302 expected 2 blank lines, found 1
1725: D203 Expected 1 blank line *before* class docstring, found 0
1725: D400 First line should end with '.', not 'd'
1728: D400 First line should end with '.', not 'f'
1763: D400 First line should end with '.', not 'd'
1768: D400 First line should end with '.', not 'd'