Merge branch 'release/1.2.1' into develop
When creating a snapshot, populate name and description
When creating a snapshot, prompt the user if the snapshot's name already exists
Show what device a volume is attached to
Attempt to catch SSH requests which fail with a SocketException or SshException
Turns out a volume's snapshotId can be retrieved directly. No need for a tag
UptimeTimer is now on background thread, so won't lock the UI if it can't connect
InstanceClient deals with lost connections better than it did.

Although it's probably not rock-solid yet
README updates
Add some more state to InstanceViewModel (ouch)

This stops the user from terminating an instance which is terminating
Create long-overdue 'Utilities' namespace
Add feature to check if up to date on startup
Bump version to 1.2.2
Update changelog
Merge branch 'release/1.2.2'

* release/1.2.2:
  Update changelog
  Bump version to 1.2.2
  Add feature to check if up to date on startup
  Create long-overdue 'Utilities' namespace
  Add some more state to InstanceViewModel (ouch)
  README updates
  InstanceClient deals with lost connections better than it did.
  UptimeTimer is now on background thread, so won't lock the UI if it can't connect
  Turns out a volume's snapshotId can be retrieved directly. No need for a tag
  Attempt to catch SSH requests which fail with a SocketException or SshException
  Show what device a volume is attached to
  When creating a snapshot, prompt the user if the snapshot's name already exists
  When creating a snapshot, populate name and description