Additions to connection_manager methods and housekeeping

Changes to connection_manager:
* Added a dedicated method (swap_tables) to the connection_manager that
will swap two tables.  Accepted arguments are host, table1 and table2,
where table1 and table2 are the tables that should be swapped.
* Added nonblock_compact_table method to the connection_manager.  This
is called the same way as a normal compaction, accepting the arguments
of host and table.  This uses a Twitter MySQL specific non-blocking
alter to do the compaction and will fail if not using Twitter build t8
or higher.  (See:
https://github.com/twitter/mysql/wiki/Change-History#wiki-5.5.28.t8)
* Added a "list_keys" method to connection manager that will return an
array of indexes (by name) on the given table.  Useful for checking if
an index is present or not prior to a schema change.

Task Changes:
* faux_truncate was modified to use the new swap_tables method.
* Added new "nonblock_compact" task that uses the new nonblock_compact
method from connection manager.

Housekeeping:
* Version bump to 0.3.8 (0.3.7 was used internally at Twitter)
* gemspec changed to not require explicit listing of each task file
* .gitignore added to allow Twitter specific tasks to not be committed.
 It also ignores .gem files and Apple .DS_Store files
Fixing nonblock_compact query
Changed --require to load file outside of ruby's load path
Bump version to 0.3.9

0.3.8 has been in use internally at Twitter.  The changes to --require
mean that we no longer need to include tasks for convenience.  0.3.8 is
likely the last version that needs to be reserved for Twitter.
Changes per Jeremy's request

Mostly changes to non_block becoming "nonblocking".  Some case changes,
and a change to the code of faux_truncate to increase readability.
Merge pull request #3 from Jericon/master

Addition of connection_manager methods, task modifications and a couple of housekeeping changes