Allow PDO to reconnect if it fails during a query.

This pull request will attempt to reconnect if the wait_timeout has been exceeded resulting in a mysql has cone away e$

In order to help test this you will need to do the following:

Set a low wait timeout: set @@GLOBAL.wait_timeout=30;
Try putting a sleep of 2 somewhere after an initial query. Session->Start() is a good option.
Use the site and see if there are any errors.
This pull request will require a significant amount of testing due to it's low-level nature.

**Note: This is a re-creation of https://github.com/vanilla/vanilla/pull/1965**