Add support for reverse dependencies.

This adds an API endpoint `.../:crate/reverse_dependencies` and a web-page `/crate/:crate/reverse_dependencies` for displaying. It's modelled after the `.../versions` page, and is not currently linked from anywhere.

![cratesio-revdep](https://cloud.githubusercontent.com/assets/1203825/5156628/e3087528-7327-11e4-8fad-9efc87de75a6.png)

Fixes https://github.com/rust-lang/crates.io/issues/68.

I basically just poked at things until they worked, I started with that, but it didn't work, so I cargo-culted from the other files here. I don't yet know what I'm doing when it comes to Ember.

If I change to `reverse_dependencies: DS.hasMany('dependency', {async: true})` & delete the reverse dependencies model I get:

````
No model was found for 'reverseDependency'

  EmberError@http://localhost:4200/assets/vendor.js:26705:17
Store<.modelFor@http://localhost:4200/assets/vendor.js:72854:1
__exports__.default<.extractArray@http://localhost:4200/assets/vendor.js:66153:22
apply@http://localhost:4200/assets/vendor.js:31551:1
superWrapper@http://localhost:4200/assets/vendor.js:31125:15
__exports__.default<.extractFindHasMany@http://localhost:4200/assets/vendor.js:65470:16
__exports__.default<.extract@http://localhost:4200/assets/vendor.js:65405:16
_findHasMany/<@http://localhost:4200/assets/vendor.js:73422:23
tryCatch@http://localhost:4200/assets/vendor.js:58985:16
invokeCallback@http://localhost:4200/assets/vendor.js:58997:17
publish@http://localhost:4200/assets/vendor.js:58968:11
@http://localhost:4200/assets/vendor.js:42236:9
DeferredActionQueues.prototype.invoke@http://localhost:4200/assets/vendor.js:13801:11
DeferredActionQueues.prototype.flush@http://localhost:4200/assets/vendor.js:13851:15
Backburner.prototype.end@http://localhost:4200/assets/vendor.js:13314:11
Backburner.prototype.run@http://localhost:4200/assets/vendor.js:13369:15
apply@http://localhost:4200/assets/vendor.js:31549:1
run@http://localhost:4200/assets/vendor.js:30166:14
__exports__.default<.ajax/</hash.success@http://localhost:4200/assets/vendor.js:63875:15
jQuery.Callbacks/fire@http://localhost:4200/assets/vendor.js:3230:10
jQuery.Callbacks/self.fireWith@http://localhost:4200/assets/vendor.js:3342:7
done@http://localhost:4200/assets/vendor.js:9386:5
.send/callback@http://localhost:4200/assets/vendor.js:9796:8
```

If I leave the `reverse-dependency.js` model and just change this line I get:

```
Assertion Failed: The response from a findHasMany must be an Array, not undefined

  EmberError@http://localhost:4200/assets/vendor.js:26705:17
Ember.assert@http://localhost:4200/assets/vendor.js:16889:15
_findHasMany/<@http://localhost:4200/assets/vendor.js:73424:1
tryCatch@http://localhost:4200/assets/vendor.js:58985:16
invokeCallback@http://localhost:4200/assets/vendor.js:58997:17
publish@http://localhost:4200/assets/vendor.js:58968:11
@http://localhost:4200/assets/vendor.js:42236:9
DeferredActionQueues.prototype.invoke@http://localhost:4200/assets/vendor.js:13801:11
DeferredActionQueues.prototype.flush@http://localhost:4200/assets/vendor.js:13851:15
Backburner.prototype.end@http://localhost:4200/assets/vendor.js:13314:11
Backburner.prototype.run@http://localhost:4200/assets/vendor.js:13369:15
apply@http://localhost:4200/assets/vendor.js:31549:1
run@http://localhost:4200/assets/vendor.js:30166:14
__exports__.default<.ajax/</hash.success@http://localhost:4200/assets/vendor.js:63875:15
jQuery.Callbacks/fire@http://localhost:4200/assets/vendor.js:3230:10
jQuery.Callbacks/self.fireWith@http://localhost:4200/assets/vendor.js:3342:7
done@http://localhost:4200/assets/vendor.js:9386:5
.send/callback@http://localhost:4200/assets/vendor.js:9796:8
````