A large number of config related edits

- The groups system has been refactored to allow easier softcoding. More on this below.
- All config.js entries are now camelCased to be consistent with the variable naming style used in the rest of the codebase.
- All the new permissions have documentation added (and no longer existent permission documentation removed)
- `crashguard` removed from config.js .
- modchat and login server configuration structure has been modified.
- Proper quoting styling has been fixed for both commands.js and config.js (" for text intended to be read by humans, ' for others)

The specialised functions in users.js: `checkPromotePermission()` and `getNextGroupSymbol()` have now been removed since they now can be implemented in a few lines in the few places that use them.
`can()` has been modified into two versions: A "static" one that accepts a fixed parameter order and type with only group symbols; and one that is part of the `Users` object which uses the current user and accepts multiple types and optional arguments.
A new function `getGroupsThatCan()` that returns the groups in a particular room that has the permission in ascending rank order, used in many cases where a group that has a permission is needed. This used to be done with hardcoding, but now can be softcoded.
The `isStaff` property of user objects has now been removed in favour for a `staff` permission, which allows individual room checking for staff ranking. As a side effect of this, room modlogs being checked by room auth that aren't global auth are now possible.
On the more config side of the group changes, which groups are global, chat room and battle room-only are now easily configurable, including which groups are the default groups for those. This allows more generalisation and simplification in the promoting/demoting logic among other things.
Fix crash in rooms.js
Merge remote-tracking branch 'upstream/master' into config-refactor

Conflicts:
	commands.js
	config/commands.js
	config/config-example.js
	users.js
Add support for setting modchat by group id
Merge remote-tracking branch 'upstream/master' into config-refactor

Conflicts:
	app.js
	commands.js
	config/commands.js
	crashlogger.js
dubs update 1.42

am @ cubone rn
Merge remote-tracking branch 'upstream/master' into config-refactor

Conflicts:
	battle-engine.js
	command-parser.js
	commands.js
	config/commands.js
dubs update 1.43

at happiny now
Merge remote-tracking branch 'upstream/master' into config-refactor

Conflicts:
	commands.js
	config/commands.js
	rooms.js
	users.js
Fix pair of quotes in /hotpatch
Pokemon cannot Mega Evolve while locked into a move
Prevent high bulk pokemon from having Focus Sash

I chose 300 as a sum of Defense, Special Defense and HP that would designate a high bulk Pokemon, due to being just below Dusknoir's sum of the three and I was getting Focus Sash Dusknoir, which is rather subpar.  The number could be changed if there's any better way to designate bulk.
Merge pull request #754 from Relados/patch-28

Prevent high bulk pokemon from having Focus Sash
Make Gourgeist have proper probability to show up
Merge pull request #755 from Relados/patch-29

Make Gourgeist have proper probability to show up
NEXT: Vivillon gets QD

Vivillon can now equip a stick to use quiver dance and gain +1 spa.
Merge pull request #759 from Tempoanon/patch-4

NEXT: Vivillon gets QD
NEXT: Vivillon gets Gossamer Wing

Vivillon can now gain the benefits of Gossamer Wing by equipping a Stick.
Merge pull request #760 from Tempoanon/patch-5

NEXT: Vivillon gets Gossamer Wing
Prevent Moxie on Pokemon without physical moves

It's literally useless - even Unnerve is more useful in that case.