changed api:
event methods now live in their own module and mixed once instead of runtime define_method's on instances
initial state can be dynamically selected in method initial_<state>
implemented activerecord adapter