wip: refactor and test update
Merge remote-tracking branch 'origin/master' into feature/admininvite
admin invite wip: add sendInvite and test
Merge branch 'master' into feature/admininvite
admin invite wip: finish sendInvite test
Merge branch 'master' into feature/admininvite

Conflicts:
	src/models/commands/UserCommands.php
admin invite wip: connected angular admin invite, stubbed out angular add existing user & add new user
Merge branch 'master' into feature/admininvite

Conflicts:
	src/models/commands/UserCommands.php
	test/php/commands/UserCommands_Test.php
merge fix up, added InviteUser test back in, fixed typo
WIP admin invite: add UserCommands::update and tests
WIP admin invite: add create new user tests
WIP admin invite: generate password for add new, refactor removeUsers & add tests
WIP admin invite: connect up refactored removeUsers
admin invite wip: add user_createSimple, add Communicate::sendNewUserInProject, finish addExistingUser
WIP admin invite: add page view when adding users t project, refactor function names
Retry JSON-RPC requests that return status code 0

This could potentially get into an infinite loop if the request
*keeps on* returning an error with status 0 and never completing,
but that's *extremely* unlikely.
WIP admin invite: add server error logging, add throws for bad Roles
WIP admin invite: remove ProjectUserCommands and LinkCommands, incorporate tests from these into UserCommands and ProjectCommands
feature/admin invite: finalised, fixed formatting
Merge branch 'feature/admininvite'

Conflicts:
	src/angular-app/sfchecks/partials/project.js