Change random code generator

Use mysql connection timing as the random seed, along with the microseconds
of the current time.
Improve integration of the Config class

Use %config table by default for config classes

Add lastModified() method to retrieve the time of last modification for a
configuration key

Add $defaults to the specified on a subclass. The defaults remove the
necessity to specify a default value for each getter method, and, the
defaults are integrated into the array retrieved from getInfo()
Add a minimum validation to the 'int' type
Add error class for automatic error logging
Add a password reset implementation

Uses a seven step procedure:
  1. (user) Fails to login twice or more
  2. Clicks the 'Forgot my password' link on the login form
  3. Submits the username or email address and triggers a password-reset
     email
  4. Clicks the link in the email and is directed back to the reset page
  5. Enters the username or email again and is logged in
  6. Password change is forced, but current password is not required
  7. Password is updated, user can continue the session without
     authenticating again
Add concept of initial data

We should move initial data out of the install SQL file, which will make way
for a few things:

  * Internationalization -- which breaks the migrater model currently.
        Moving the data outside the install script makes it translatable
        without changing the SQL hash
  * Review -- Migrations which add more data don't highlight new features
        that need review to the adminsitrator
Merge pull request #638 from greezybacon/feature/password-reset

Password reset feature

Reviewed-By: Peter Rotich <peter@osticket.com>