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