Switches to storing a State's events in collections indexed by event name.

Previously:
  {:name => #<Event:...>, :other_name => ...}

Now:
  {:name => [#<Event:...>, #<Event:...>], :other_name => ...}
Adds conditional transitions.

Conditions are procs or lambdas added to events, like so:

  state :off
    event :turn_on, :transition_to => :on,
                    :if => proc { |device| device.battery_level > 0 }
    event :turn_on, :transition_to => :low_battery,
                    :if => proc { |device| device.battery_level > 10 }
  end

When calling a `device.can_<fire_event>?` check, or attempting a
`device.<event>!`, each event is checked in turn:

* With no :if check, proceed as usual.
* If an :if check is present, proceed if it evaluates to true, or drop
  to the next event.
* If you've run out of events to check (eg. battery_level == 0), then
  the transition isn't possible.
Merge pull request #109 from damncabbage/conditional-transitions_for-upstream

Adds (optional) condition checks to Event transitions.