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).