workflows: update workflow tasks

* Adds new filtering task for record categories, allowing to
  specify which categories to trigger an action in holding pen.

* Adds task results to objects in various tasks.

* Updates the sample harvesting workflow to use new bibclassify
  API.

* Several other updates and improvements to workflow tasks.

* Updates the category filtering task to allow regular expression
  syntax when defining which categories to halt, continue or stop
  the workflow.

* Adds new data type attribute to workflows, by Jan Aage Lavik.

* Updates the exception handling to better handle exceptions in
  workflows when running a workflow in a BibSched task.

* Improvements to category filter.

* Adds options for the foreach loop, we can now cache the
  list to go through it will then allow to five the choice
  to the user if he wants to priviledge CPU vs Memory,
  cache uses few CPU but a lot of memory and doesn't provide
  a dynamic list. Without the cache option, we recompute the
  list each time so we use much more CPU but we keep just
  the data needed so few memory, and the list is still
  refresh for each loop.

* Refactors use of extra_data in the engine.

* Changes the task foreach so that obj.data takes the value
  it has before the foreach. In the previous version we were
  keeping the last value of the foreach.

* Adds the function filtering_oai_pmh_identifier which
  allows you to filter the identifier. Mainly used to
  avoid processing already processed one.

* Adds features to  inspire_filter_category, now parameter
  can be passed throught the extra_data of the engine.

* Fixes some bugs with regex in inspire_filter_category

* Adds the function update_last_update which allows you to
  update the last_update time of a repository. It is
  important because the user can choose exactly where in
  the workflows he considers that a crash is not a problem
  for harvested documents.

* Adds the different features needed by the change from
  pickle to message pack in Celery, to the container for
  BibWorkflowObject exchange.

* Adds the inspire_filter_custom task which allows to
  filter record by examinating some field of its bibfield
  It is a generalization of inspire_filter_category.

* Reenables all the functions in full_doc_process
  workflow.

* Adds some control over the number of workflows generated
  it is to avoid the memory saturation or the messaging
  queue limit.

* Adds some protected name for workflows to avoid possible
  conflict with new task an new user data etc.

* Add some functions to control workflows states.

* Fixes PEP8 and clean code

* Deletes non-informative logs.

* Modifies the different workflows to take into account the
  previous modification made.

Co-authored-by: Jan Aage Lavik <jan.age.lavik@cern.ch>
workflows: Holding Pen update

* Adds concept of data types to Holding Pen display, so users
  can filter on submissions, records etc. using the attribute
  "object_type" in workflow definitions.

* Removes some uninteresting/unused columns in the Holding Pen
  main table and adds a new columns called categories containing
  any record subjects found, if applicable.

* Cleans some blueprint code and routes for resolving widgets.

* Amends the approval widget and record details templates/JS to
  make use of these changes.

* Refactors the tag system used in the main Holding Pen display.

* Changes approval widget design and layout.

* Updates Holding Pen main table display with better column sizes.

* Improves detailed display of workflow definition.

* Refactors imports in marcxml_tasks.

* Fixes an exception dealing with single or multiple categories
  when extracting subjects from record object.

* Updates in harvesting workflow tasks.

* Adds a new template for detailed layout.

* Fixes a problem with hotkeys in the main table display.

* Adds a new bootstrap-tagsinput package for use in the holding pen
  display.

* Adds the new package to bower/Grunt file.

* Removes the current config.py and moves the enumerations
  into engine.py and models.py where appropriate and changing the
  naming from CFG_OBJECT_VERSION to ObjectVersion.

* Updates deposit models to use the new ObjectVersion.

* Removes the DATA_TYPE enumeration. This will now be dynamically
  loaded from the database in the holding pen.

* Updates all old references to "task_counter" to the new naming
  scheme "_task_counter" that was causing workflows to fail, but
  remains backwards compatible with "task_counter".

* Removes some older code from BibMatch/matcher widget which is still
  not usable yet.

* Fixes an error when trying to display depositions in
  Holding Pen.

* Creates a new Edit Record widget which will be used for
  (limited) record editing from Holding Pen.

* Adds templating blocks for Holding Pen navigation bar and
  record preview.

* Creates a new field rendering macro for better WTForm rendering.

Co-authored-by: Jan Aage Lavik <jan.age.lavik@cern.ch>