This patch adds two more possible argument types for Acedia's commands:
for arbitrary JSON values (argument types for any specific type of value
were already availabler before) and for players type of value (allowing
to specify a list of players with selectors, similar to how one does it
for targeted commands).
This patch does not actually implement parsing of these two arguments,
simply adds a possibility to declare them.
Now `LoggerAPI`, instead of simply loggin messages by itself, uses
logger objects (deriving from `Logger` class) to output log messages for
it (previous way of logging by `Log()` method is available by
`ConsoleLogger`).
Multiple loggers can be configured per each log level, which can be done
via config.
This is a giga commit, something that should not really be done with
git, but I messed up.
This commit brings a great amount of changes, most important is
reworking `TextAPI` and alsmost complete replacement of `string` with
`Text`/`MutableText`.
Another huge change is introduction of command system that allows to
define commands in a centralized manner, handles auto-parsing of
their parameters and auto generates help info.
Lastly, JSON data types were replaced with new
`DynamicArray`/`AssociativeArray` that are better designed and more
generic.