MDL-45296 tests: Fix unit tests to have objectid

In order to create the needed subscriptions to
make the event tests reliable a subscriptions
generator has been added. It performs raw-sql
subscriptions because by using the forum API
events would be fired (and that's something
we don't want to happen).
MDL-45296 tests: ensure all submissions exist

The changes performed with the change from
create_from_user() to create_from_submission()
in practice enforce a new restriction about
submissions having to exist in order to fire
their lock/unlock events.

This did not exist before the change and, also,
it seems that the assign api itself, submission->lock() ...
also accepts non existing submissions.

So I was not 100% sure about how to fix these events:

1) enforcing submission to exist.
2) firing them only if the submission exist.

I've gone with 1) for now, making tests to pass. But will
raise the question in the Tracker, just in case we have
to move to the 2) approach for any reason.