Dap/Mtp: Remove unmount, add claim (bgo#731916)

We need to unmount MTP devices for banshee to make use of them, this
causes nautilus to produce error messages in some cases, as described in
[1].

This patch adds a parameter to DapSource.DeviceInitialize to signal
whether we should attempt to force the connection to the device (at the
user's request via the ClaimDapAction) or just make a best attempt.

To facilitate this, DapSource subclasses can now throw
InvalidDeviceStateException which will allow them to make a claim on a
device even though they couldn't initialize it. At that point, a new
type, PotentialSource is mapped, enabling the ClaimDapAction.

[1] https://bugzilla.gnome.org/show_bug.cgi?id=731916
Mtp: Check error stack on battery status error
Mtp: fix NullReferenceException if playlistFolder wasn't found (bgo#733883)

There was already a way to try to prevent a NULL playlistFolder
in the MtpDevice class, but it was insufficient in my case. I'm
using a Nexus7, and in this case 'device.default_playlist_folder'
was not 0, but 4294967295 (which apparently is uint.MaxValue).

However, rather than adding yet another magic number in this if
statement, checking for a NULL playlistFolder at the end of the
foreach loop seems like a more robust approach.