e2e: fix typo
bower: freeze dependencies

The upgrade from version 1.3.0 to 1.3.1 of angular-mocks broke the
tests on Firefox. We will now start versioning the dependencies
strictly and upgrade them by hand and as needed.
package: require bower 1.3.12 or later

This is the current version. We need a version greater than 1.3.8 due
to a bug which was fixed by bower/bower#1403. Will freeze the
dependency next to avoid such problems in the future.
package: freeze dependencies

This makes it easier to reproduce the Travis builds and avoid spurious
build failures.
bower: update angular and angular-mocks to version 1.3.1

Since angular/angular.js@1426b02, the $httpBackend will convert the
expected value to and from JSON before calling angular.equals between
the data we pass into the expectation and the data received as part of
the HTTP request.

This made the unit tests fail on Firefox since

  JSON.stringify(new Blob(['foo']))  =>  "{}"

in that browser. In Chrome, we instead have

  JSON.stringify(new Blob(['foo']))  =>  '{"type":"", "size": 3}'

and this happens to make the angular.equals call work, since it will
end up comparing the properties of the actual Blob with the properties
of this object.

In either browser, we actually never compared the blob data. Instead,
we ended up comparing "[object Blob]" with itself. The
$httpBackend.expect API is synchronous and blob data can only be read
in an asynchronous fashion.
package: upgrade karma-jasmine to 0.2.3

This brings in Jasmine 2.0.0, which has an improved syntax for writing
asynchronous tests. No test changes needed by the upgrade.
karma: test locally using both Chrome and Firefox

There are sometimes subtle differences between the browsers and this
should help detect them sooner rather than later.
swift: test that uploadObject sends correct data
Merge pull request #148 from mgeisler/freeze-deps

Freeze dependencies
swift: add deleteContainer method

The method will first empty the container before deleting it.

Should the container be modified in the middle of this operation (by
adding a new object while it is being emptied), the operation will
fail. This is not yet tested.
swift-sim: add support for deleteContainer
root: add delete container modal (fixes #37)

For now, this works very similarly to the delete object modal. It
should be extended with a progress bar later.
Merge pull request #146 from mgeisler/delete-container

Add support for deleting containers
protractor: fix indentation
protractor: resize browser window to 640x480 on startup

Our layouts should work on small screens (mobile devices) and this
also makes the tests take up less desktop real estate.
protractor: move loadAngularMocks call into onPrepare (fixes #67)

The onPrepare function is executed once before the test suite runs.
This means that we can register the loadAngularMocks calls there
instead of doing it per describe-block.

We still have to use beforeEach and addAngularMock since we need to
re-inject the scripts after every browser.get call.
swift-mock: set async = false on script tags

In HTML5, dynamically script elements default to async = false,
meaning that they'll be downloaded in parallel and executed in an
unknown order.

This is most likely the reason why we've seen random errors like:

  Error: Error while running module script swiftBrowserE2E:
  [$injector:nomod] Module 'swiftBrowserE2E' is not available!

in the Travis output. An example is this build:

  https://travis-ci.org/zerovm/swift-browser/builds/39145010

Explicitly setting the async attribute to false makes the browser
execute the scripts in the order they are added. See

  http://www.html5rocks.com/en/tutorials/speed/script-loading/

for more background information.
Merge pull request #150 from mgeisler/protractor-onprepare

Use onPrepare with Protractor
controllers: replace $.map with Array.map

We assume IE 10 and later and this was already added in IE 9.
bower: remove jQuery dependency

We don't really need jQuery for the few and simple DOM queries we do.