BibIngest: new module to handle document ingestion

* Introduces a new module 'BibIngest' that handles document ingestion for
  Invenio. The module provides the basic CRUD functions: create, read, update
  and delete.

* Allows for multiple ingestion packages types and storage engines to be
  defined as plugins.

* A configuration file is provided where combinations of ingestion packages
  and storage engines can be defined per collection along with specific
  settings for each case.

Conflicts:
	configure.ac
	modules/Makefile.am
BibIngest: move module to legacy folder

Signed-off-by: Esteban J. G. Gabancho <egabancho@gmail.com>
workflows: revamp session handling

* Changes the way the db.session is called in
  BibWorkflowEngine and BibWorkflowObject models
  to use a session_manager decorator.

* Adds new classmethods to BibWorkflowObject to create
  objects and revisions.

* New BibWorkflowObject's are now by default initiated
  with version set to INITIAL (from RUNNING).

* RUNNING version is only set when a BibWorkflowObject is
  actually being executed in a BibWorkflowEngine.

* Removes the workflow status FINISHED, as it was too
  ambiguous compared to COMPLETED. If a workflow contains
  data objects that have not reached FINAL version, the
  workflow status is set to HALTED.

* Cleans some of the log messages in the engine.

* Reworks what happens when a workflow is asked to *fully*
  restart. It will take the INITIAL version of every
  associated object and run it through the workflow from
  the start.

Signed-off-by: Jan Aage Lavik <jan.age.lavik@cern.ch>
workflows: sphinx documentation and more

* Adds sphinx documentation syntax to functions in the module.

* Fixes a problem with duplication of logger, the logger was
  a singleton but not the handlers which were accumulated each time
  we were continuing a workflow, producing database burst.

* Deletes some dead code.

* Fixes a mistake which was due to limitations in extra_data
  access.

Reviewed-by: Jan Aage Lavik <jan.age.lavik@cern.ch>
Signed-off-by: Guillaume Lastecoueres <guillaume.lastecoueres@techie.com>
workflows: add more unit tests

* Adds more unit tests with new tasks and workflows.

Signed-off-by: Guillaume Lastecoueres <guillaume.lastecoueres@cern.ch>
workflows: update generic_harvesting_workflow

* Updates the generic_harvesting_workflow.

Signed-off-by: Guillaume Lastecoueres <guillaume.lastecoueres@cern.ch>
workflows: update API and errors

* Workers now return directly, removing some preliminary code
  to close sessions.

* Adds new exception WorkflowAPIError to alert about API usage
  errors.

* Amends the way workflows within a workflow is initiated.

Signed-off-by: Jan Aage Lavik <jan.age.lavik@cern.ch>
workflows: revamp testsuite

* Implements a renewed testsuite for workflows with better coverage
  overall.

* Cleans up the tests a bit, renaming and moving the tests in
  test_halt into the renewed test_workflows suite.

Signed-off-by: Jan Aage Lavik <jan.age.lavik@cern.ch>
workflows: add more docs

* Adds basic documentation for API and Holding Pen view under
  api.rst.

* Adds docstrings in various modules to be included in general
  documentation.

Signed-off-by: Jan Aage Lavik <jan.age.lavik@cern.ch>