DropMessage refactoring: Don't use generic-parametered DropMessages

but ModelObjects as `data` field that shall be casted to specific target types afterwards.

Perhaps a reasonable way to get rid of the template-bracket-frenzy that's spread all over the code.
Please review and critizize - I haven't spent so much time in semantically walking through all the changes.

Resolves #199 once merged.
I still prefere my approach for the reason, that you cannot check anything at runtime. With giving a Type.class parameter to the function, we know the type at runtime and can do checks and throw custom exceptions.

With your approach all you can get is a ClassCastException but you don't know why.