MySQL Cleanup Code

Added destructors to the MySQL\Connection and MySQL\Result classes, since apparently the resources are not cleaned up when the mysqli objects containing them go out of scope (they are cleaned up when the execution of the current script ends).
MySQL Comment Typos

Fixed two typos in comments in mysql/connection.php.
Multi-Byte String Encoding Conversion Utilities

Added three functions -- Convert, ConvertTo, and ConvertFrom -- to the String class.

- The Convert function converts between arbitrary encodings without the intermediate step of UTF-8
- The ConvertTo function converts a UTF-8 string to an arbitrary encoding
- The ConvertFrom function converts a string from an arbitrary encoding to UTF-8

Since there's no sensible fallback for encoding conversion in the absence of the mbstring extension, all three of these methods throw an exception if the function mb_convert_encoding is not present.
String Multi-Byte Check

Added the IsMultiByte function to the String class, which allows a caller to check to see if the String class is fully capable of handling multi-byte strings.  The function simply checks for the existence of all the functions and classes that the class uses to handle multi-byte strings, returns true if they're all found, false otherwise.
Merge branch 'master' into unit_tests
.gitignore

Updated .gitignore, which was previously too restrictive.

Rather than defaulting to ignoring everything, not nothing will be ignored except:

- All PHP files in the root directory except test.php (which will run the unit tests)
- All files in the templates directory, except those related to unit tests
- All batch files (used to copy files to a web server for testing, not useful as part of the repository, or possibly even portable beyond the local machine)
Test Front-End

Wrote a test driver and templates to display/format the result of tests.

The test driver looks at every .php file in the "tests" directory and tries to instantiate a class in the Tests namespace with the name of the file (minus the extension) which extends \CivicInfoBC\Testing\TestSuite.  If such a class is found, it calls the Execute method and stores the results, which are then formatted by the test.phtml template (which is rendered once per result set).
String Unit Tests

Added 32 unit tests for the \CivicInfoBC\String class.
Base64 Unit Tests

Added 3 unit tests for the \CivicInfoBC\Base64 class.  The class-in-question is a very thin wrapper around the PHP base64_encode and _decode methods, so minimal tests are necessary, but a guard was added to reject strings containing whitespace (which PHP does not do).  Insuring this works is one of the unit tests.
bcrypt Unit Tests

Added 5 unit tests for the \CivicInfoBC\bcrypt class.
Convert Unit Tests

Added 19 unit tests for the \CivicInfoBC\Convert class.

Only the ToInteger, ToIntegerOrThrow, ToFloat, and ToFloatOrThrow methods are currently tested.
Crypto Unit Tests

Added 2 unit tests for the \CivicInfoBC\Crypto class.
HTML Unit Tests

Added 5 unit tests for the \CivicInfoBC\HTML class.

Only the Escape method is currently tested.