Removed implicit shutdown
Changes
- Former behaviour was for an stateful/persistent actor to shutdown if it the next state was a falsey value. This has been removed as it isn't hugely useful and is a little bit too implicit for my liking. Think it creates confusion more than anything else.
- Adjusted snapshotting behavior to discretely snapshot. This means that snapshots only are scheduled after a message has been completely processed.
- Removed some branching.
- Removed some allocations
- Added hooks for encoders and decoders for both persistent messages and snapshots. This will make the reason wrapper of nact a lot more efficient. (It's currently performing a json serialize/deserialize every message, a massive hack that was done as an emergency fix in a production scenario)