Flexible object types

This extends from #5, so please look at it first.

Leverage the `Bone` registry to allow a user to provide any type of `Backbone` types they want.

For instance, you could ask for `RelationalModel`, `UniqueModel`, `AssociatedModel`, `PageableCollection` or anything else that may be requested with something similar to:

```javascript
myBone = new HyperBone.Bone({
    serviceType: MyServiceType,
    modelType: Backbone.RelationalModel,
    collectionType: Backbone.PageableCollection
});
```

During discovery, implementations of `ServiceType` are able to hook into this using `@bone.createModel` or `@bone.createCollection`.