placeholders in mixin uris for ngHal.

Adds the ability to put placeholders in mixin uris using :, ?, and *
syntax, e.g. `http://meta.prx.org/model/collection/:collectable`.

Matched terms from these templated URIs will be available for injection,
allowing some intelligence in mixin definitions based on the match of
the document. This, unfortunately, means that that code may be executed
more than once.

```javascript
ngHalProvider.mixin('http://meta.prx.org/model/collection/:collectable', ['collectable', function (collectable) {
    return {
        collectableType: collectable
    };
}]);

...

ngHal.mock('http://meta.prx.org/model/collection/puppy').collectableType; // => 'puppy'
```

Refactors ngHal to be a little more composed - multiple factories, etc.