**Enhancements**
- FIX sessions are now resumed between different connections by default. Pass parameter `-new_session` when calling
the pipeline in order to reset sequence numbers and initialize a new session.
- Rename 'sessions' to 'connections' to align with FIX protocol terminology.
- Gap fill processing is now more reliable, and will queue messages that are received out of order until the gaps have
been filled.
- Set exit codes on pipeline termination so that caller can take appropriate action.
- Add `MessageStoreApp`, with default implementations for in-memory and redis-based stores for caching and / or
persisting messages to database.
- Convert all `on_send` and `on_receive` handlers to async and await.
- Messages are now sent in separate Tasks to avoid holding up the main event loop.
- AuthenticationApp now blocks all incoming and outgoing messages until authentication has been completed.