upload-modal: rename Cancel to Close

This is really a close button. We will soon be keeping the modal open
after the files have been uploaded (to show the status of each upload)
and this button will then be used to close the window.
upload-modal: use styled button for adding file (fixes #66)

The file input element is now hidden. We cannot interact with hidden
elements from Protractor, so we need to make it visible before we call
sendKeys on the element.
upload-modal: support uploading multiple files at once
test: extract uploadFile function
upload-modal: test upload of multiple files
upload-modal: update UI immediately when a file is added

Before, the UI would only update when the next digest cycle was
triggered, typically after another click in the browser.
upload-modal: use jQuery shortcut

We depend on jQuery so we can use this shortcut.
upload-modal: test that selected files are shown
upload-modal: test that selected files remain unsorted
upload-modal: support selecting multiple files at once (fixes #75)

There doesn't seem to be a good way to test this with Protractor since
Selenium doesn't support this yet:

  https://code.google.com/p/selenium/issues/detail?id=2239
swift: use $upload.http for uploading files

This is to get support for upload progress. The ng-file-upload package
will monkeypatch the XMLHttpRequest a little so that it can get access
to the XHR created by $http. It needs access to it so it can attach an
onprogress event handler.

We're not currently using anything else from ng-file-upload.
upload-modal: show progress bars when uploading (fixes #76)
upload-modal: avoid reuploading files

This partially addresses #78: simply clicking the upload button after
uploading a file again will no longer do anything. However, it doesn't
fix the case where the user uploads a file named 'foo' to a container
already containing a file with that name.
upload-modal: disable upload button when all uploads are done
upload-modal: support removing files (fixes #79)
Merge pull request #77 from mgeisler/multi-upload

Support for uploading multiple files
swift: remove unnecessary format=json query string parameter

Angular already adds a "Accepts: application/json" header which makes
Swift return JSON data.
swift: let $http add query string parameters

This changed the URL used in a test because the internal buildUrl
function used in $http sorts the parameters before adding them to the
URL. In other words, we can expect the new output to be stable.

We also had to change the regexps used in the Swift similator so that
they can handle the lack of '?' when listing a container.
app: use ui-router instead of ng-route

This is a flexible routing framework by the AngularUI team. Compared
to ng-route, this gives us more precise control over the routes:

* we can match URLs both with and without a trailing slash. With
  ng-route this is not possible since matching 'foo' automatically
  adds a rule for 'foo/' with a redirect back to 'foo' (and vice-versa
  if you add a rule for 'foo/').

* we can generate links to application states with associated URLs.
app: standardize on curly pattern matches