Rename start_state to default_start_state

Allow for the start_state (really the default start
state, since initialize can change it) to be provided
in the constructor, as well as set via a property that
will be used by default in initialize (if one is not
provided that overrides the initial state).
Add more checks on setting a alternative start state default
Require using set_default_start_state to set the default
Use a property setter instead of a method
Merge pull request #1 from harlowja/default_start_state

Rename start_state to default_start_state