Part of PIVOT-861:  Lingering memory leak of ListenerList$Node objects when continuosly
creating and destroying windows or buttons (from BXMLSerializer).

It seemed like the basic problem was every time you use a ButtonRenderer, there is a
call to ImageView.setIcon which takes the old image out of the ImageViewSkin listener
list and puts the new one in, ending up creating a huge number of ListenerList$Node
objects for every add to these lists.

So, I rewrote the whole of ListenerList to use a small array for these lists instead
of a real linked list.  Empirically the lists don't usually grow very big, so the
default size of 5 works well except for a handful of cases, and then the largest
seen was 25.

The result is that I don't see any long-term memory leak at all in the test applications
and the overall memory thrashing seems less because we're creating far fewer of these
little Node objects (just to add and remove a reference in a small list).

Also reverted the last changes to ButtonData.java and Image.java to take out the
earlier workaround that wasn't quite working.

This is a merge of revision 1447977 from branches/2.0.x to trunk.


git-svn-id: https://svn.apache.org/repos/asf/pivot/trunk@1447978 13f79535-47bb-0310-9956-ffa450edef68