Use global CURRENT_FORMAT_VERSION for system_description tests

Since we don't want to use our Factory for the system_description
unit test to not miss errors in our implementation we still use
static json data there.

To not have to change the "format_version" manually each time it
is now replaced automatically by the global CURRENT_FORMAT_VERSION
value.
Add meta data changes support to Factory

For some unit tests it was needed to influence the meta data
of the created descriptions.
Replace static json data through Factory method

Use create_test_description instead of static json data wherever
possible to make it easier to adapt the tests after format
changes.
Prevent class overloading by stubbing the migration classes

I ran into issues that my migrate2to3 failed if I ran it with all unit
tests while it worked fine when run alone.
The reason for this was that in migration_spec the class Migrate2To3 was
already specified so it messed the test up.

To prevent this the class was stubbed in the migration spec.