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
app: introduce object state with ObjectCtrl

This splits the ContainerCtrl into two, one controller for handling
listing pseudo-directories and another for listing single objects.

Before, drilling down in the hiearchy of pseudo-directories would
eventually take you to a page with a "listing" of a single object.
This happened when the prefix excluded all other objects. This page is
now empty -- we will use it to show object specific metadata.

The test updates were necessary since the path parameter no longer
contain the final slash.
swift: add headObject method

Despite what the documentation says, there is no expectHEAD method in
version 1.2.25 of angular-mocks.
object: show metadata (fixes #99)