(DRAFT) Branch 'projects-v4'

== Project system ==

The old situation lead to a user table containing a messy mix of
passwordless "client" accounts, unused accounts with passwords
from people using "signup", and "project" accounts that submit
jobs. This blurry distinction has been made strict now.
Nobody can sign up from the web anymore.
To join the swarm for test running, simply join directly
(which is how it was already), clients take a free form text
field as their "name", which doesn't have any account attached
to it (there is nothing clients can do other than run tests).
To create a "project" account for job submission, run the
manageProject.php script from the command line, which returns
the auth token (which you'd previously get from the db manually).

== Changes ==

Database:
* Table 'projects' replaces old 'users' table.
* Remove various SQL `default` attributes that were confusing
  and unneeded.
* Remove foreign key restrictions.

API:
* Query parameters for authentication changed from:
  - authUsername (users.name)
  - authToken (users.auth)
  to:
  - authID (projects.id)
  - authToken (users.auth_token)
* SignupAction: Removed, no longer used.

Pages:
* SignupPage: Removed, no longer used.
* ProjectPage: Based on the "Recent jobs" section of
  what used to be UserPage.
  - New: Timestamp of each job.
* ProjectsPage: Not changed much. Except that it can now really
  query all projects, instead of running a query against
  various tables and list all project-like user accounts.

Scripts
* manageProject.php: (NEW) To create and alter projects in the
  database from the command line.

Misc:
* Auth object is now managed inside TestSwarmContext (instead of
  being accessed globally directly from the session).
  This made it possible to fix #181, and cleaned up some duplication.
* Fix various documentation comments for consistency
  - @param type $name
  - "authAction: Required"

References:
* fixes #148: Refactor users/clients relationship and add projects
* fixes #181: Session continuation should validate that account
  still exists and is the same.