Added semantic links to states.

I took a stab at implementing #441, this version supports following links recursively (failing on cycles). A slightly weird wart is that you can override relative state references but not absolute ones, so if you have:

```javascript
.state('a', { links: { 'b': 'c' } })
.state('a.b', {...})
```

and try `$state.go('.b')` from `a` you'll end up in `c`, but `$state.go('a.b')` gets to `b`. Ideally either states should always be found by searching path segments (slow and breaks compatibility), or aliasing existing state names should be prohibited (hard to do if the order of state/link declaration is non-deterministic).