Make Task being added depend also on Workflow type

Tasks that are placed inside direct workflow contain different fields
from the ones that are inside reverse workflow. To do this, change
acceptsMixin.getValue() return value from the final Barricade class to
the function that returns that class when called - by doing so it is
able to construct class dynamically.

Note that if the type of the parent workflow is changed, its tasks
which become invalid do not know about that - not implemented yet.

Also get rid of types.Mistral.Version and fix a small bug with removal
element from an Array.

Change-Id: Idda3391c48e5691de92ad302280eb4edd941a001