Minor refactor of method missing

Just tweaking method_missing a little bit more and rejiggering the `__sm_*` events a bit.
I like the order of my branching logic because it was simple to read through (and it called __sm_is_state_predicate? one less time)

Since it appears you want like the line ```return super unless __sm_is_method?(method)```, what do you think about breaking up this method?

```ruby
def method_missing(method, *args, &block)
  return super unless __sm_is_method?(method)
  __sm_resolve_method(method, *args, &block)
end

def __sm_resolve_method method, *args, &block
  return __sm_predicate(method) if __sm_is_state_predicate?(method)
  __sm_event_transition __sm_event(method), args[0] || {}, __sm_event_mode(method)
end
```