Make generated field names comparison friendly.

Generated field names less than 4 bytes long retained empty bytes from
the buffer, meaning they returned false negatives for comparisons and
generally did not behave as expected. They are now stripped.
Test the property to column name mapping.

Added a test to ensure properties would be properly mapped to column
names.
Fix bug in IncludeIfNotNil and set SQL in New.

IncludeIfNotNil didn't actually check if the value was nil. That bug is
now fixed.

New() has also been expanded to accept the initial SQL to initialize the
Query with.
Fixed toSnake and modified returns for fields.

GetQuotedField and GetAbsoluteFields now return two slices of
interface{}s, so their results can be passed directly to Include*()
functions. Only strings will ever be returned.

toSnake no longer returns any result with byte padding, so the logic to
correct for that has been removed from the getFields function.
Created real world test cases.

Created several test cases that use queries that mirror queries in our
actual code base. This exercises the package a bit more (79% test
coverage!) and offers reassurance that not only is the code correct, it
correctly maps to our understanding of what the code _should_ do.
Gofmt and genreadme.

Formatted and re-generated the readme.
Fixed bugs in IncludeOrder and IncludeIfNotNil.

IncludeIfNotNil's type checking was brought into line to match the types
accepted by reflect.IsNil(). It also now falls back on
IncludeIfNotEmpty, if possible.

OrderBy previously left out the specified clause from the expression,
which made it of limited use. This has been rectified.

The extra space in IncludeLimit has also been removed, for consistency.
Update validTag, fix field reflection, queryList

validTag now accepts "-", "_", and "." as valid tag values for a
column's name, in addition to unicode letters and digits.

getFieldColumn now checks that a tag is valid before returning it,
falling back on snake_cased field names if the tag is invalid.

getFields now expands interfaces and pointers to check their underlying
types and values. To prevent panic()s, getFields now returns immediately
if the expanded type is not a struct.

GetColumn likewise expands interfaces and pointers, before returning if
the expanded type is not a struct.

QueryList now accepts an []interface{}, so it can be passed directly to
the Include* methods.
100% test coverage!

Added tests for things we didn't have tests for, and fixed a defect in
our current tests (our testType's tag syntax was incorrect).
go fmt

I feel bad about myself.
Add support for multiple engines.

PostgreSQL and MySQL use different placeholder variables, so pan needs
to differentiate between them. By passing the database engine, pan will
replace "?" characters with "$1", "$2", etc. for Postgres or leave them
alone for MySQL.
Update README.

README now includes the new function signatures that make it possible to
use different database engines.
Added omit tag for column names.

When parsing the sql_column name tag, pan will now ignore any field
tagged with "-". This is to allow structs to have properties that aren't
stored in the database.
gofmt and added omit test.

Restore 100% test coverage by testing for omission of columns.

Run gofmt.
Merge pull request #7 from DramaFever/paddy_omit

Added omit tag for column names.
Merge pull request #6 from DramaFever/paddy_test

Fix a few bugs and 100% test coverage