registry: keygetter value fix

* `register` method of `DictModuleAutoDiscoverySubRegistry` class
  gives original value of parameter `value` to the keygetter method
  as well as the modified value from valuegetter.

* NOTE If your registry.py is using DictModuleAutoDiscoverySubRegistry
  and you use your own keygetter method then please update your
  keygetter method to use all three parameters.

Co-authored-by: Jan Åge Lavik <jan.age.lavik@cern.ch>
Co-authored-by: Lars Holm Nielsen <lars.holm.nielsen@cern.ch>
Signed-off-by: Graham R. Armstrong <graham.richard.armstrong@cern.ch>
workflows: registry fix for keygetter method

* `keygetter` method of WorkflowsRegistry updated for keygetter fix.

Co-authored-by: Jan Åge Lavik <jan.age.lavik@cern.ch>
Signed-off-by: Graham R. Armstrong <graham.richard.armstrong@cern.ch>
jsonalchemy: move to `isinstace(foo, Mapping)`

* Improve type checks to use `collection.Mapping` instead of `dict` as
  this the recommended way and it gives more abstraction.

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@gmail.com>
jsonalchemy: preserving original tags inside JSON

* When using creator rules that involves regex like `245..` the original
  marc tag is preserved inside the `__meta_metadata__` key for posterior
  needs.

* Enhances `json_for_marc` producer to use the input tag if the
  producer is defined to do so (See `json_for_marc` documentation).
  (addresses #1722)

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@gmail.com>
records: move legacy methods to the Record object

* Moves `legacy_export_as_marc` and `legacy_create_recstruct` from the
  `SmartJson` class to the record class.

* Enhances test cases for this two methods.

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@gmail.com>
jsonalchemy: fix for `__additional_info__` access

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@gmail.com>
assets: require.js + uglify.js

* Updating webassets and Flask-Assets to 0.10-dev.
  BROKEN see: https://github.com/miracle2k/flask-assets/pull/67

* Hacking the assets extension to remove the initial "/" to js modules
  otherwise r.js is confused.

* Grouping the invenio.js with bootstrap.js.
  It's a PROOF OF CONCEPT! THINGS ARE GONNA BREAK!!

* Using require.js in dev and almond.js in production.

Signed-off-by: Yoan Blanc <yoan.blanc@cern.ch>
base: using bootstrap 3 via require.js

Signed-off-by: Yoan Blanc <yoan.blanc@cern.ch>