fixed bug where a slice of primitives would cause validate error

So I found a particularly nasty bug where if you made a struct like so: 

```
type fooStruct struct {
	ListInt      []int
	ListString   []string 
}
```
The struct would fail validating even if you didn't add the "valid" tag to that field. In other words having a slice of primitives in a struct would make the struct always fail validation. 

Anyway the fix below should do it. It passes all the tests and I added new tests for slices of primitives.