Cleaned up code.

- Changed setttings variables from private static fields into a single
  static object for organizational purposes and to avoid redundancy.
Added Hook system. Re-added empty settings filling.

- New public array that you can assign hooks for functions to.
- Settings no longer an object, but rather an associative array.
- Re-added empty-value assignment.
- Added before and after hooks for all functions that work with the
  database that can be assigned by name.
- Added 'all' function hook to execute on every database-accessing
  function.
DBroker updates: New hook, validation. More information in commit comment.

- Added hook toggle setting.
- Added validation hook that occurs before the arguments are even parsed.
- Changed order of default assignment for settings.
- Changed setting assignment logic to a simpler and easier to follow method.
- Removed empty filling since that happens before the settings arguments
  are even read.
- Removed useless cast left over from when settings was an object.
- Added validation logic to every database-modification and query function.
- Removed useless escaping since hooks would make it redundant.
- Added looping hook protection. If you want hooks to trigger each
  other, you now need to run DBroker::setup(array('hooks' => true))
  inside your hook that you want to trigger others.
- New validate function that handles validation hooks and return values.

This hook allows you to validate arguments before DBroker even attempts
to use the for things. This is great for scrubbing for SQL injections or
for plugging in an ACL.

The following is an example hook that should scrub all input and make
inputs SQL injection resistant:

    DBroker::$hooks['validation']['all'] = function(&$args){
      if(is_array($args))
        foreach($args as $key=>&$val)
          $val = mysql_real_escape_string($val);
      else
        $args = mysql_real_escape_string($args);

      return true;
    };
Added reasonable quantity of documentation on DBroker hooks.