ListenToEvents: subscribe to events earlier

That way, when we create the dataset, we might receive some events in
relation to that operation.
ListenToEvents: subscribe via context injection

Whenever we inject a context anywhere, we now also subscribe to any
event handlers marked with @EventHandler. So let's use that rather than
requiring the event handler class to extend AbstractContextual.
ListenToEvents: tweak javadoc
ListenToEvents: report events using the LogService

This also demonstrates that context injection nets you service
parameters for free. And this commit updates the log message to print
the exact class of the event actually received, too.
ListenToEvents: subscribe to DatasetCreatedEvents

Since we immediately go ahead and create a dataset, let's listen for
that event to demonstrate things.
DisplayATable: do not set the class loader anymore

This is no longer necessary, thanks to the shiny new super-smart
legacy layer bringing ImageJ1 and ImageJ2 much closer together.
Remove no-longer-needed Eclipse APT preferences

This was useful only before we had the SJC EclipseHelper.
Specified swing interface for ROI display

originally when the add-ROI tutorial was written, the “swing” user
interface was the default. At some point after, the ImageJ 1 user
interface was set to a higher priority causing the UI to not be
visible. Specifying the UI as “swing” allows us to display the UI and
created ROI once more.

See also:
https://github.com/imagej/imagej-ui-swing/issues/16
https://github.com/imagej/imagej/issues/89
AddTwoDatasets: do not use JFileChooser directly

Instead, let's use the UIService's file choosing mechanism.
Bump tutorials to latest pom-imagej parent

This fixes many ImageJ bugs, some of which surface relating to the
tutorials. For example, the using-ops tutorial could not show image
objects produced by ops using the ij.ui().show method.
UsingOps: compute larger demo images
UsingOps: display the image in an ImageJ window

It is only natural to want to do this. Until 2.0.0-rc-8 there were bugs
in ImageJ preventing it from working, but now we can finally do it.
Add another example of Op creation

The "Random Blobs" op is another example of creating and running a new
op. This op takes desired blob size and number of blobs as parameters
and then creates an image using these specifications. The tutorial is
meant to show how ops can aid in image creation.

A main method has been included within the tutorial to allow the user to
output and view the image in the console window as ascii characters.
Migrate widget scripts elsewhere

They have moved to the scripting-beanshell and scripting-javascript
projects, as new templates. This will make them more accessible to
all users of the Script Editor, since they will now appear in that
editor's Templates menu.

https://github.com/scijava/scripting-beanshell/commit/6e6a19e5fcc12c3729f59e1591b2ee195a2ae96d
https://github.com/scijava/scripting-javascript/commit/7d7916e840929847aea4277a718d1d4b8826dcb1
Merge pull request #9 from imagej/blobs-final

This branch adds an example op that produces an image.
RandomBlobs: clean up style
RandomBlobs: add random seed as optional input

Now the output of the blobs example is deterministic, rather than
unpredictable. This is vital, because OPS are supposed to be functions,
which always produce the same outputs when given the same inputs.
UsingOps: add workaround for INFO logging

We use ij.log().info(...), but the default log level is now WARN.
Let's set it to INFO so those messages actually show up...
RandomBlobs: clarify documentation
Add a simple gradient/ramp op