Adding more backend stuff

- Aphelion now stores the password to join and also identifies with
services
- Now stores the config
- Now stores factoids (and has relevant commands)
- Expanded getters in Aphelion.class
- Updated shutdown method
- Added ability to change the command prefix
- Added factoid prefix (!)
- Added global user data (to track users on a server instead of on a
channel)
- Added word banning logic
- Aphelion can now be invited to channels
- Tracks ops in a channel
- Tracks voices in a channel
- Tracks nick changes
- Responds to actions
- Attempts to track the online status of a user
- Protects the topic from banned words
- Added new utilities
- Added new commands (save, uban, deop, voice, devoice, join, part,
cycle, sysinfo, isonline, ignore, uignore, rename, move, remember,
forget, factlist, lockfact, unlockfact, listbwords, help, raw, identify,
scramble, google, wolframalpha, urbandictionary, google fight)
- Notice pertaining to google/google fight: these commands should not be
used excessively or your access to the google apis will be blocked
- Commands now use a CommandEvent which is a wrapper for MessageEvent
- Providing no parameters to the channel administration commands
performs them on the user that sent them.
- Kick now accepts a reason instead of mass kicking users
- renamed modifyflags to modifyuserflags
- reorganised packages
- Fixed bug where Aphelion's UserData would not get a link to PircBotXs
User class
- Flags can now be added en-masse by writing @flags give <nick> ALL
- Flags now have their own class
- Flags can now be declared negative, meaning their effects don't give
the user permission but instead perform a negative action on the target,
such as AUTO_KICK
- added new flags
- Added regex matcher engine (allows an event to be triggered when a
regex matches the sent message)
- Added a youtube information getter