Optimise SquareImageView layout.

A normal call to setImageDrawable() will result in a layout request, as the
image being added may cause the ImageView to resize.

In the case of SquareImageView this is not the case, as the dimensions are
fixed irrespective of the image size.  So block layout requests for the
duration of calls to setImageDrawable().

See https://plus.google.com/113058165720861374515/posts/iTk4PjgeAWX for
more.
Merge remote-tracking branch 'kaaholst/actionbar' into actionbar

* kaaholst/actionbar:
  Update the UI on return from browsing songs of a playlist
  Cleanup and polish SqueezerBaseListActivity
  Enable Android Studio and the Gradle build system
  Correctly unregister songlist callback
  Fix items not loading after resume from sub-activity
  Fix commit message for the previous commit
Use Gradle versions of 0.5.1 and above, per
http://tools.android.com/knownissues.
Remove references to non-existent strings.

settings_username_title and settings_password_title were removed when
server_address_dialog was refactored, but they were still referenced here.

Remove the TextViews, and replace with hints in the EditText views.
Make it obvious that the CLI port can be specified with the server address.

If the user does not explicitly provide a port then add the default port
when the dialog is closed, so it will be displayed in the UI.

Include the port explicitly for any servers found through discovery.
Use a marquee effect for long strings of track info.

The previous code would wrap long track/album/artist information on to
multiple lines when showing "Now Playing" info.  This could cause the size
of the displayed album artwork to shrink/grow depending on available space,
and was visually jarring.

Force the TextViews to be a single line high, and use the "marquee" effect
to scroll items of text.
Remove unnecessary semi-colons.
Support volume control without needing the hardware buttons.

The user can trigger the appearance of the volume panel from a menu or
from the hardware buttons.  When triggered, the volume level is indicated
by a seekbar in a volume panel, which the user can drag to set the desired
volume.  After a period of inactivity the volume panel automatically
dismisses itself and fades from view.

The previous version of this code used a Toast with a custom view to act
as the volume panel.  That doesn't work with a SeekBar, as the user cannot
interact with any controls on the Toast.  Therefore, replace the Toast
with a Dialog themed to look similar to a Toast, and with similar automatic
dismiss behaviour.

Since the user can now set the volume level directly (by dragging the
SeekBar) and trigger the appearance of the volume panel without changing
the volume level (by selecting the menu item) add a method to the service
to set the volume to a specific level, and track the current per-player
volume in SqueezerPlayerState.

The creation of the volume panel has moved from the service to the
NowPlayingFragment.  As a Toast the service could show the panel, but
services are not permitted to show dialogs.  Accordingly, have the fragment
register the menu item to display the volume panel.  In addition, it needs
to show the panel whenever the volume changes, so provide an interface,
IServiceVolumeCallback, and a mechanism it can use to register callbacks
to listen for volume changes and display the panel.
Use the three-arg form of LayoutInflater.inflate() everywhere.

This is necessary so that the inflated views evaluate their layout
parameters in the context of the correct parent ViewGroup.

See http://www.doubleencore.com/2013/05/layout-inflation-as-intended/ for
details.
Use the correct layout for spinner dropdown items.

Fixes a bug (in conjunction with the previous commit) where spinner items
where shown either too small, or in the wrong colour.
Merge remote-tracking branch 'kaaholst/actionbar' into actionbar

* kaaholst/actionbar:
  Do not use deprecated intent in connectivity change broadcast