Export custom fields with the ticket queue export

Also add in the user email address after the user name.

This patch also adds an ::export() method to the FormField() class which
allows a field to define how the data should be formatted when exported.
Merge pull request #408 from protich/feature/collaborators

Collaborators

Reviewed-By: Jared Hancock <jared@osticket.com>
Merge pull request #396 from greezybacon/feature/custom-data-export

Export custom fields with the ticket queue export

Reviewed-By: Peter Rotich <peter@osticket.com>
Merge branch 'develop' into develop-next
Make variable replacer __call aware

is_callable will report ANY function as available
Add authtoken routine
Add variable replacer callback
Proof of concept for authentication
Change AuthenticatedUser user to interface class.

This is necessary to force downstream classes to implement key required
functions.
Split AuthenticationBackend into two -
  - StaffAuthenticationBackend - handles backends supported in staff panel
  - UserAuthenticationBackend - handles backends supported in user panel

Registering a backend at parent level (AuthenticationBackend) will make it
available to both panels.
Split AuthLockoutBackends into two backends - for staff and user.

Monitor failed login attempts and enforce timeouts
Add TicketUser class which implement AuthenticatedUser
Add token (authtoken) based authentication to User authentication backend.
Use staff authentication backends on login and when selecting staff's
authentication backend.
Change AuthenticatedUser to abstract class

Add ability for backends to set authorization key (authkey) specific to the backend.
The authkey is tagged with the "id" of the backend that generated it.
Add ability for the backends to continue authenticated user session

Checks the session for authkey and asks the backend that generated it to
validate it and return authenticated user.
Provide facility for the backend to signout on user logout.
Discontinue Client class

TicketUser class - Abstract class with auth token implementation
TicketOwner class - extends TicketUser

Add user ticket stats to EndUser class
Make collaborator extends ticket user  - necessary for authtoken support
Make Clientession extends EndUser

Allow variable replacer to call __call functions
Use ticket owner (enduser) instead of client.
Add EndUser lookup by email to TicketUser - returns a decorated user
Refactor/improve authtoken authentication backend.
Change My Tickets (x) to Tickets (x) - with collaborators in mind