Customise the song list views depending on filtering.

Create a custom view for SqueezerSongListActivity when viewing all the
songs on a single album.  The view shows the album information
(artwork, name, artist, year) in a fixed view at the top of the list.
The tracks are shown (without the artwork) in a ListView below.

Menu items to play the album, add it to the current playlist, or
browse artists on the album are moved from the options menu to a
custom context menu shown in the header.

Refactor SqueezerSongView in to two classes.  Keep the general
behaviour and context menu in SqueezerSongView, and create
SongViewWithArt that handles setting album artwork.  This means that
SqueezerSongView can inherit from SqueezerPlaylistItemView instead of
SqueezerAlbumArtView.

In addition to hiding the album artwork, SqueezerSongView adjusts the
information shown in the second line of "details" information.  When
viewing an album the album name does not need to be repeated, and, if
it's not a compilation, the artist name can be removed.  Instead, show
the track number and the duration.  Adjust the tags requested for
songs to return this information.

To do this, introduce two general mechanisms for configuring
SqueezerBaseItemView.  The first is via a new
SqueezerBaseItemView.ViewParams enum.  Subclasses can set this to
specify the features that that item view should have -- an icon, a
second line for details, and a context button -- both when the view
has data, and when it's waiting for data to be loaded in to it.

Introducing this meant that the custom layouts icon_large_row_layout,
icon_one_line, and icon_two_line could be retired, as they can be
implemented with this new method.  This also means that the single
item view layout is consistent across different views, and errors
(inconsistent padding, etc) can be avoided.

The second mechanism is similar, except it's an enum of "Details" to
show in the second row of text.  Classes and subclasses can set this,
and the bindView method will include the relevant details in the
correct order.

This pushes a lot of common code in to SqueezerBaseItemView and
simplifies many of the itemlists/*View.java files -- in most cases
they now set the details that should be included and a binding with
small custom bindView() methods.

This highlighted an issue with searching, as the search results only
include the album name and ID, with no other metadata.  So change the
service's search() method to instead issue 4 parallel requests to the
server for artists, albums, genres, and songs that match the search
text.

This also means that album and song artwork can be included in the
search results list, so do that.

These changes also made it possible to adjust SqueezerAlbumListView
and SqueezerArtistListView to show a header displaying what they
showing if filters were in effect ("All songs by <foo>", "All albums
in genre <x>") and so on, so do that.

Add a dependency on the Guava library for its support for easy string
joining and some value checking methods.
Merge branch 'actionbar' into custom-album-view
Merge branch 'actionbar' into custom-album-view
Put back GENRE enum, deleted in error.
Fix typo in comment.
Update playlist code with other itemlist code.

Use the new mechanisms to show album artwork, track duration, album, and
artist.  Remove the special formatting for the details text.
Show additional details in search results.

For songs show the duration, album, and artist.  For albums show the artist
and year.
Merge branch 'actionbar' into custom-album-view

* actionbar:
  Fix a bug where searches from the search activity did not work.

Conflicts:
	src/uk/org/ngo/squeezer/SqueezerSearchActivity.java
Merge branch 'actionbar' into custom-album-view

* actionbar:
  Enable voice searches.
Merge branch 'actionbar' into custom-album-view

* actionbar:
  Fix BadTokenExceptions with VolumePanel.
  Include connection state when determining which power menu items to show.
  Fix a bug where all option menu items were being shown.
Merge branch 'actionbar' into custom-album-view

* actionbar:
  Replace non-functional "Download" option menu item with a context menu.
  Correctly take account of padding when calculating the view size.

Conflicts:
	src/uk/org/ngo/squeezer/NowPlayingFragment.java
	src/uk/org/ngo/squeezer/widgets/SquareImageView.java
Use Guava 15.0.
Merge branch 'actionbar' into custom-album-view

* actionbar:
  Update to Gradle 1.8.
  Change "Volume" in the menu to "Change volume".
  Set the album's layout_height to fil_parent.
  Use a non-deprecated method to fetch the display size.
  Include the player name in the "turn on/off" menu items.
Merge branch 'actionbar' into custom-album-view
Use margin instead of padding.

This corrects the image placement now that SquareImageView takes account
of padding.
Merge branch 'actionbar' into custom-album-view

* actionbar:
  Add padding to the Scrobble app selection dialog to match the platform.
  Update album and song select preference summaries on selection.
  Additional strings cleanup.
  Remove leading spaces before each ellipsis.
  Adjust strings for playlists.
  Provide explicit ordering for certain menu items.
  Note a possible change to make to options menu creation.
  Set width to fill_parent so that smaller album artwork displays correctly.
SquareImageView takes account of padding, so switch to layout_marginRight.

Without this, the maximum image size is computed to be reduced by the amount
of padding, resulting in a smaller image.
Add a tools:layout rendering hint for Android Studio.
Merge remote-tracking branch 'origin/custom-album-view' into custom-album-view

* origin/custom-album-view:
  Use margin instead of padding.
Properly return the boolean value for context menu clicks from search results.

Without this, Android assumes that the context menu click was not handled,
and it bubbles up to the next context menu handler, which is in the
NowPlayingFragment.  The end result is that you choose a context item like
"Browse songs on album" and it shows the album selected from the search
results, and immediately loads the album that's currently playing on top of
that.