Start fixing how images are downloaded.

The current code in SqueezerIconUpdater.updateIcon is called from
every getView().  getView() may be called multiple times for each
ImageView, and every time it is the image is fetched again.  So
album artwork might be downloaded two or three times for the same
ImageView.

Fix this by introducing an ImageDownloader class.  This class
maintains an in-memory cache of images that have been downloaded,
which means that not only do we stop downloading the same image
multiple times for a single ImageView, we will re-use the image for
any ImageViews on screen that should be associated with the same
image, for an even greater win.

This class is modeled on the SDK example
XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.html,
but modified so that one or more ImageViews are associated with URLs,
and to use LruCache instead of the home-grown approach in that file.

SqueezerSongView has been updated to use this new method, the other
views will be modified in future commits.

Use an animation when images are displayed -- this helps highlight
any times that images are being re-downloaded when they shouldn't
be, for further work.
Use the ImageDownloader class when browsing albums.

Use 'icon' instead of 'image' in SqueezerPluginItem to reflect
the results from the server.

Add additional comments in places.
Refactor filter/search and sort order handling.

Remove the Squeezer{Filter,Order}ableListActivity subclasses,
hosting fragments is a sufficiently understood idiom that they just
made the inheritence hierarchy deeper.

Add clarifying comments in a few places.
Use JavaDoc for the pageSize comment.
Add comments for future work.
Add a "download" feature to the "Now playing" activity.
Support downloading tracks via the music folder view.
Remove prepareActivity() from SqueezerBaseListActivity.

Subclasses now call super.onCreate(savedInstanceState) and then do any
work they would have done in prepareActivity().  This keeps the code
closer to the normal Android activity lifecycle.
Break the circular link between SqueezerItemAdapter and SqueezerItemView.

SqueezerItemView had a reference to the adapter that created it, which
was used in two specific subclasses to determine whether or not "move
down" entries in the context menu should appear.

Break this link, and explicitly pass the adapter in to the
setupContextMenu() method where it can be used if necessary.
Format a comment, clean up whitespace.
Call context menu actions through the adapter.

The previous code called straight through to to the view to handle
the context menu selection.  This code goes through the adapter's
doItemContext() method.

Call through to the super class to get correct default behaviour.
Delegate context menu creation to the adapters.

Have SqueezerItemAdapter and SqueezerSearchAdapter implement the
OnCreateContextMenuListener interface.
Rename SqueezerItemView.setupContextMenu() to onCreateContextMenu().

For consistency with the rest of the context menu creation API,
rename the SqueezerItemView.setupContextMenu() method to
onCreateContextMenu().

The additional parameters that were passed to setupContextMenu()
are placed in a SqueezerItemView.ContextMenuInfo object.
Further smoothing of album artwork display.

Implement a 2 level (memory and disk) cache of bitmaps retrieved from
the server to reduce the amount of network activity.

Refactor the scroll handling code to be sensitive to the cache's disk
access, and use an OnTouchListener to track whether the user has their
finger on the screen

Hoist common code out of SqueezerAlbumView and SqueezerSongView, and
put it in SqueezerAlbumArtView.
Make lists with track artwork scroll even more smoothly.

Replace the previous image processing and disk cache code with a slightly
different version from the Google IO Schedule opensource app (with some
bug fixes).

Use an ImageFetcher to fetch images for both the artwork lists and the
"Now Playing" activity.  The ImageFetcher is backed by an in-memory and
on-disk cache.

Pass the ImageFetcher from the list activities, down through the adapter,
and in to the per-item views.

The new code takes account of some quirks in different versions of
Android.  In order to get the correct API constants, increase the
targetSdkVersion to 10, and build against API 16.

Work around the NetworkOnMainThreadExceptions that this can cause by
explicitly allowing networking on the main thread for the time being.
Stop tracking .classpath.
Merge branch 'load-images-correctly'

Conflicts:
	src/uk/org/ngo/squeezer/SqueezerActivity.java
	src/uk/org/ngo/squeezer/SqueezerSearchAdapter.java
	src/uk/org/ngo/squeezer/framework/SqueezerBaseItemView.java
	src/uk/org/ngo/squeezer/framework/SqueezerItemAdapter.java
	src/uk/org/ngo/squeezer/framework/SqueezerItemView.java
	src/uk/org/ngo/squeezer/itemlists/GenreSpinner.java
	src/uk/org/ngo/squeezer/itemlists/SqueezerAlbumListActivity.java
	src/uk/org/ngo/squeezer/itemlists/SqueezerAlbumView.java
	src/uk/org/ngo/squeezer/itemlists/SqueezerMusicFolderView.java
	src/uk/org/ngo/squeezer/itemlists/SqueezerPlayerView.java
	src/uk/org/ngo/squeezer/itemlists/SqueezerPluginItemView.java
	src/uk/org/ngo/squeezer/itemlists/SqueezerPluginView.java
	src/uk/org/ngo/squeezer/itemlists/SqueezerSongView.java
	src/uk/org/ngo/squeezer/itemlists/YearSpinner.java
Remove a memory leak when scanning for servers.

Make ScanNetworkTask a static inner class, and cancel the task when
the preference dialog is destroyed (e.g., on screen rotation).

Create a ProgressDialog during the scan and display that, instead of
an embedded ProgressBar in the preference dialog.

Adjust the scanning algorithm slightly, and make it attempt based,
rather than time based.  Drop the number of attempts from ~ 20 to no
more than 5.
Remove an editor swap file.
Merge branch 'download'

Conflicts:
	src/uk/org/ngo/squeezer/itemlists/SqueezerMusicFolderView.java