- The `Connection` type is now a kind-of `Thread`
- Added field `associatedServer` of type `Server` such that a connection can be associated with a given server
- Added field `clientSocket` such that a connection can associate the socket with itself
- Constructor sets the two above fields and calls the `Thread` super constructor passing in a function pointer to the worker function (currently a while loop)
- Implemented `Connection newConnection(Server, Socket)` which produces a new `Connection`, then calls `Server.addConnection()` and finally starts the `Connection`'s thread via `start()`, then returns the Connection
- Added a queue of `Listener`(s) and a corresponding lock
- Added a queue of `Connection`(s) and a corresponding lock
- Initialize all queue locks in the constructor
- Added `addListener(Listener)` for adding a new listener; will throw an exception if already added
- `Server` now implements `ConnectionConsumer` and implements an `addConnection(Connection)` method which consumes the provided `Connection` and adds it to the connection queue
- Added new module `errors`
- Added new type `ErrorType` with enum member `LISTENER_ALREADY_ADDED`
Exceptions (package)
- Publically import `errors` (only `ErrorType`) and `RenaissanceException` from `types`
Types
- Added `RenaissanceException` type as the base exception class for the server code
- Added new type which represents any class that can "consume" (or add) a new `Connection` object
Listener
- Updated to now use the `ConnectionConsumer` interface type rather than `Server` directly
Listener (package)
- The package now imports (publically) `consumer` and `listener` modules
- Addex exported single logo as `branding/logo_single.png`
Documentation
- Added a README with the logo, title and tagline
App
- Restructured into a module name `renaissance`