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.
Convert::ToInteger Fix

Fixed a bug in the Convert::ToInteger method which could cause the method to erroneously convert floating point values with fractional components to integers (a lossy conversion).
Crypto PRNG Fix

Added a shim to the Crypto::Random method to simply return the empty string if zero bytes are requested.  Proceeding and attempting to acquire zero bytes causes an exception when using OpenSSL as it fails to correctly report that the random number generator is suitable for use in cryptographic applications.
URL Fix

The URL::MakeQueryString method didn't set the $retr variable to the empty string unconditionally, instead assuming that the provided array had at least one element, and that the foreach loop would therefore executing at least once, initializing and setting $retr to "?".

Obviously this was a poor assumption, and it has been fixed.
Router Simplification

Simplified the code that creates a controller instance in the Router class.  Previously call_user_func_array was used to pass an array of arguments through to the ReflectionClass::newInstance method, however the ReflectionClass class has a method specifically for this use case: ReflectionClass::newInstanceArgs.

Accordingly that method is now used instead.