Improve EOperation handling

* Use the static signature of the EOperation to locate the
  implementation method, so that it can be invoked on any
  type-compatible list of arguments.

  Previously the lookup was done on the exact types of the runtime
  arguments, so an EOperation op(T) could not be invoked on an argument
  whose type was a strict sub-type of T.

* Handle multi-valued EParameters, which in Java will be generated as
  EList parameters.

* Avoid a reflective lookup on each invocation. We now rely only on the
  static signature of the EOperation, so the lookup can be done only
  once on initialization.

Change-Id: I133844bc233f7de547b0a98a847112f480627ac0
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
9 files changed