split commands into three categories:
 * core: the core commands that only owners can call and run in the same process
 as the bot does, they also have access to the bot's socket
 * user: normally accessible commands that will run in a separate process in
 order to enable both I/O bound and CPU bound work
 * auto: similarly to user commands they will be run in a separate process,
 the only difference being that they cannot be called by users or owners,
 they are fired automatically

Also now the user and auto commands don't get access to the bot's socket, only
core commands do