add format for next state
constructor for NewFSMContext

Make it possible to test FSM Deciders by letting outside users construct
an FSMContext. Without this constructor, the FSMContext's fsm will
always be nil, and as such it will have a nil Serializer.
add State() to Outcome

Facilitate testing of deciders by outside packages by letting them check
for a state change caused by their Outcome.

Also simplified mergeOutcomes() to use this part of the interface.
add doc and fix a vet issue so that `make ready` passes
added GetShardIterator