Add support for custom tls.Configs

This adds the ability to customize the tls.Config object so you can:

- Specify a custom RootCA (instead of skip verify)
- Specify a client certificate for authentication w/ or w/out a password

Example of how it would be used:

```go
package main

import (
	"crypto/tls"
	"crypto/x509"
	"database/sql"
	"fmt"
	"github.com/lukescott/mysql"
	"io/ioutil"
	"log"
)

func main() {
	rootCAs := x509.NewCertPool()
	{
		pem, err := ioutil.ReadFile("/path/ca-cert.pem")
		if err != nil {
			log.Fatal(err)
		}
		if ok := rootCAs.AppendCertsFromPEM(pem); !ok {
			log.Fatal("Failed to append PEM.")
		}
	}
	clientCerts := make([]tls.Certificate, 0, 1)
	{
		certs, err := tls.LoadX509KeyPair("/path/client-cert.pem", "/path/client-key.pem")
		if err != nil {
			log.Fatal(err)
		}
		clientCerts = append(clientCerts, certs)
	}
	mysql.RegisterTLSConfig("custom", &tls.Config{
		RootCAs:      rootCAs,
		Certificates: clientCerts,
	})
	db, err := sql.Open("mysql", "user@tcp(localhost:3306)/test?tls=custom")
	if err != nil {
		log.Fatal(err)
	}
	var row string
	err = db.QueryRow("SHOW DATABASES").Scan(&row)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%#v\n", row)
}
```