Initial release
Allow transitions to have the same 'name'. This allows us to call the same method on a model when using an attached state machine and to deal with moving from/to different states. This is helpful, for example, when 'expiring' a checkout, which could be in any intermediate state before expiring.