Only use pymysql for MySQL connections

It is pure Python, widely adopted, and performs better with
unicode in some cases.
In MySQL check for existing tables by querying information_schema

This brings the MySQL engine in line with the Postgres and SQLite
engines in how it checks for existing databases.

This ensures that existing databases are properly identified at
startup. It also fixes sporadic GUI errors resulting from a race
condition on the cursor since the queries in table_exists were
being repeatedly executed.

Fixes #142.
Merge pull request #150 from ethanwhite/mysql-bug

In MySQL check for existing tables by querying information_schema
Merge pull request #149 from ethanwhite/just-pymysql

Only use pymysql for MySQL connections
Simplify code for setting a box in the GUI to be a password box

Just a minor refactor.
Make MS Access table_exists more consistent with other engines

Queries the table names using the ODBC .tables() method
and only does so once.

Use of the .tables() method instead of a query is necessary
because Access doesn't provide permissions to query the relevant
system table by default.

This should make MS Access robust to the kinds of race condition
errors identified fixed in eb702c6baf116164f265deca9303aa59e4187e36
for MySQL.
Make Access table checking work with pypymsql instead of pymysql

We are using pypymysql which returns a slightly different object
when calling the tables() method.
Save full path of database when saving connections involving files

This seems like the better behavior if a file with a relative
path is entered when making a connection.
Force connection wizard to be large enough for 'choose file' button

Because (probably) app.ConnectPage.Draw contains different fields
depending on the engine, wx is not properly accomodating the
varying sizes of this page that might result. In cases where there
is a file attribute (sqlite, MS Access) the wizard is too small
on some systems and the button is cut off.

This is a hack that temporarily addresses this problem by adding
a large empty text box to the bottom of the first page of the
wizard. This probably should be fixed properly when time allows.
Merge pull request #155 from ethanwhite/msaccess-table-exists

Make MS Access table_exists more like other engines
Merge pull request #156 from ethanwhite/save-full-path

Save full path of database when saving connections involving files
Merge pull request #157 from ethanwhite/dbconnect-size

Force connection wizard to be large enough for 'choose file' button
Adding JSON engine

Modeled closely off of csv engine.

The python file cannot be name json.py as this conflicts with the
import of the json module.
Cleanup database connection following command line installation

Previously lib.engine.final_cleanup was only triggered by the GUI.
This change results in the CLI also triggering a final cleanup
after installing a dataset.

This has the added benefit of allowing text file based output
formats to add any necessary end of file information.
Add a disconnect method to add the final ] to the json file

Plus some other minor cleanup
Make decimal and string JSON exports work properly

1. Convert the decimals that are currently stored as strings to
   Decimal.
2. Move to simplejson since this supports Decimal.
3. Don't add quotation marks at the end of format_insert_value.
4. Don't escape quotes in strings since json/simplejson handle
   this (resulting in extra escaping.
Close out JSON files cleanly

1. Remove the trailing comma on the last entry
2. Add the final square bracket

Unfortunately this is a slightly tricky thing to do and this
requires that the entire file be read into memory again, which
could be an issue for large datasets.
Switch back to using the json module instead of simplejson

1. Switch simplejson to json
2. Convert string representations of decimals to float instead of
   Decimal

We were using simplejson to support the use of Decimal values for
exporting floats, but we don't actually need to use Decimal values
because using floats accomplishes exactly the same formatting on
export. Therefore switching back to a core module is preferable.
Use None for null values in json engine

This causes the json module to properly dump the json keyword null.
This is better than empty strings because some importers will treat
emptry strings as string values thus changing the data type for the
columns. It is better than removing the key:value pair because it
is explicit about the presence of the null.
Remove unnecessary sizer from app.connect_wizard.ConfirmPage

This fixes the problem with the confirm dialog not displaying