Engine & Flow can take additional 'default' states

This enables plugins to be passed in by client applications.

This should be `additional_state`, a `state` is a hash, states sounds like it would be an array of hashes.

It's a picky change, but with some existing naming in Smartdown (especially around state) it's worth changing IMO