Implement first version of the optimize method

It currently uses GridSearchOptimizer.
Remove invoker argument and set it via property
Implement our first invocation plugins

Currently, there is TimeoutInvocationPlugin, which cancels a task after
a specified number of seconds, and PrintInvocationPlugin which prints
some useful information about the current invocation on stdout.
Pass Invocation objects to invocation plugins
Merge branch 'pluggable' into develop