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>