Fix a few bugs and 100% test coverage

EDIT: #7 should be merged into this before this is merged.

Achieved 100% test coverage.

![cleverness.gif](http://gifs.paddy.io/cleverness.gif)

Also, fixed a number of errors that were exposed by tests:

1. the snake_case converter padded bytes which broke string comparison. It no longer does this.
2. The IncludeIfNotNil helper didn't actually check if the value was nil.
3. 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.
4. OrderBy previously left out the specified clause from the expression, which made it of limited use. This has been rectified.
5. The extra space in IncludeLimit has also been removed, for consistency.
6. validTag now accepts "-", "_", and "." as valid tag values for a column's name, in addition to unicode letters and digits.
7. getFieldColumn now checks that a tag is valid before returning it, falling back on snake_cased field names if the tag is invalid.
8. 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.
9. GetColumn likewise expands interfaces and pointers, before returning if the expanded type is not a struct.
10. QueryList now accepts an []interface{}, so it can be passed directly to the Include* methods.