Adding the ability to transition to relative states that are defined with a parent attribute rather than having the parent state embedded in the name.

This allows the alternate syntax:
    
 .state('foo')
 .state('bar', { parent: 'foo' })
    
in addition to to the more traditional method:
    
  .state('foo')
  .state('foo.bar')
Making sure nested child states work with using the parent attribute. This works by storing all state names into the 'states' dictionary. This means that if you have:

    .state('foo')
    .state('bar', { parent: 'foo' })
    .state('baz', { parent: 'baz' })

Then you'll get the following state names registered as lookup paths:

    * 'foo'
    * 'foo.bar'
    * 'foo.bar.baz'
    * 'bar'
    * 'bar.baz'
    * 'baz'