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

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.9 (0.3.7 and 0.3.8 were 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
* Modified mysql_table_manager bin file to allow a task to be required outside of the ruby load path.