Strengthen type safety in Invoker

Replaces type aliases with case classes when appropriate.

Replaces int/long values with durations when appropriate.

Replaces String with more explicit types when appropriate.

Other minor Scala tweaks (e.g. eliminating procedure syntax).

Avoid creating potentially large string twice.
7 files changed