Switch from actor model to FRP.

This is a massive rewrite and has drastically changed many of the
internals of Chat Core. Some systems are not completely re-implemented
yet.
Re-implement the chat logging system.

Also implement sending core events to remote clients.
Re-implement chat log fetching.
Fix warnings in ChatCore.State.Internal module
Implement chat buffer acid state system

- Store a list of buffers in the acid state database.
- Mark buffers as active or inactive.
- Automatically join active buffers on startup.
Refactor ChatUser.

Split the main `chatUser` function into smaller components.
Finish refactoring main components.
Fix hlint warnings
Handle JOIN, PART, and QUIT buffer events.