Fix license of sj-window-state.[ch]

These should have been licensed under GPL2 or later but I originally
copied the license header for LGPL2 by a mistake.
Disable 'submit-tracks' when disc is ejected

If the drive is empty there are no tracks to submit!
Move submit infobar to ui file

The infobar at is only ever used to prompt the user to submit an album
to Musicbrainz so there is no need to keep creating and destroying
it. Moving it definition to the ui file simplifies the code and
removes code from GEdit which does not have an exception for
proprietary codecs.

The appearance of the infobar is changed slightly, there is no icon
anymore and it now uses a symbolic close button which saves some
space.

Note that the buttons in the infobar are packed into their own box to
stop the button box adding internal padding to the buttons which makes
the close button look too wide.

This raises the required Gtk version to 3.4 for GtkActionable
Remove GtkAlignment for progress bar

Using GtkAlignment for padding is no longer necessary as we can use
the widget's margin properties instead.
Adjust position of progress bar

Progress bars in Gtk 3.14 are much thinner so it's position needs
adjusting. It still doesn't look great but is better than it was.
Remove stock items

A couple of "gtk-quit" stock items got missed when the other stock
items were removed.
Set default response for alert dialogs

Gtk focuses the left most button if there is no default which is not
normally the response the user is expecting if they just press enter.
Require explicit conformation for quitting while extracting

If the user pressed escape to dismiss the dialog then sound-juicer
closed while extracting. Instead continue extracting if the user
dismisses the dialog with escape.
Formatting fixes

Break some long lines, remove trailing whitespace and reformat
function declaration.
Refactor treeview initialization

The initialization code for the editable treeview columns is all the
same so it makes sense to use a helper function.

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Fix playback with multiple track selection

Prepare support for multiple selections. Only change seek_to_track if
there is a single track selected.

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Edit extract column of multiple tracks at once

Allowing the user to select multiple rows at once makes it much
quicker to edit common fields. Prepare the way by implementing this
for the extract column. As it is possible to activate a cell that is
not in the selection take care to only update the selected rows if the
activated cell is selected.

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Edit text of multiple tracks at once

This is the final step in allowing the user to select and edit
multiple rows at once. Implement editing for text fields of all
selected rows and activate multiple selections on the track
listview. This makes it much quicker to edit a common Artist/Composer
for a subset of tracks. As it is possible to activate (and therefore
start editing) a cell that is not in the selection take care to only
update the selected rows if the activated cell is selected.

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Add SjTreeView

This is a subclass of GtkTreeView where horizontal movements skip
columns that are not activatable/editable. Tab moves to the next
activatable/editable wrapping if necessary. Control-Tab moves the
keyboard focus to the next widget. With a suitable cell renderer
moving cells while editing is also possible so the user does not need
to press 'Enter' to confirm the changes, then move and then press
'Enter' again to start editing the new cell.

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Add vertical movement to SjTreeView

When trying to move vertically check if it's possible to move before
stopping editing. If the current cell is being edited start editing
the next cell after moving.

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Focus default cell before moving cursor

If GtkTreeView::move-cursor is called when the cursor isn't currently
set then focus the default cell. This avoids the cursor being moved
before it is shown.

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Add SjCellRendererText

This is a subclass of GtkCellRendererText which accepts changes
without confirmation and does not stop editing when the toplevel
loses focus. This means that the user no longer loses their changes
if they forget to press 'Enter' when they have finished editing.

This raises the required GLib version to 2.38 for
G_DEFINE_TYPE_WITH_PRIVATE

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Add movement keys to SjCellRendererText

Allow the user to move cells while editing. This makes editing much
quicker as the user no longer has to press 'Enter' to confirm their
changes, then move and then press 'Enter' again to start editing the
new cell.

[Shift]Tab - move to the [previous]next activatable/editable column
[Page]Up - move up a [page]row
[Page]Down - move down a [page]row
Control-Home - move to the top of the current column
Control-End - move to the bottom if the current column
Control-Tab - move the keyboard focus to the next widget

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Use SjTreeView and SjCellRendererText

Use the new widgets to improve the editing of track details.

https://bugzilla.gnome.org/show_bug.cgi?id=151469
Duration label should not be selectable

This improves the keyboard navigation as tab now jumps straight from
the disc number entry to the track listview.

https://bugzilla.gnome.org/show_bug.cgi?id=151469