Ignore set_initial_state for persisted records

The existing behavior will always invoke the :enter callback for the
record's current state, regardless of whether or not that state was
previously set.

This is particularly bad for persisted records, as loading the record
from the database triggers the `set_initial_state` call, and will force
the :enter callback to be repeated -- this behavior is problematic when
the callback is anything complex or non-idempotent, such as triggering
an email.

The solution introduced here is to avoid invoking the :enter callback
unless `set_initial_state` actually assigns a new state.

Avoid model name collisions in ActiveRecord specs

There's room for a more robust fix here, involving setting up a handful
of fixture models which more tests could leverage. Until then, we should
avoid using duplicate model names between test files.

In addition to renaming one fixture, this commit moves all db
preparation into setup methods (so we aren't performing migrations while
loading the test files), and eliminates some unused fixture models and
attributes.