Support relative state transitions when defined with parent property

Currently, you can not reference states relatively that were defined with a `parent` attribute rather than specifying the intended hierarchy in the name itself (e.g. `hierharchy.in.state.name.here`).  

This does not work because states are registered based on the name given to them through `state(...)` and cannot be looked up through any other means. This pull request changes that by defining additional states based on the `parent` attribute and registering a state for each step along the way up the ancestry chain, meaning: this adds the ability to transition to relative states that are defined with a `parent` attribute.

This allows the alternate syntax: to be used

    # New alternate method. Let's you break up your state definitions into manageable chunks
    # in complex apps.
    .state('foo')
    .state('bar', { parent: 'foo' })
    
    # in addition to the traditional method, using name to determine state hierarchy
    .state('foo')
    .state('foo.bar')
    
This makes it possible to use the relative syntax to transition to states, e.g.:

    # when inside of foo state
    <a ui-sref=".bar">Go to bar</a>

This works with the relative path syntax (`^`) as well.