Added interactive components to display arbitrary images

Makes it easy to attach custom displays to objects.  All the object has to do is define a `get_image` function that returns a Java `Image` object.

Ready for review/merging :cake: