Handle swagger “required” properly.

Don’t emit required if its empty, add all elements not tagged omitempty to required. Second try (see #89), should fix the problem with recursive models in the previous pull req. (I dont see an easy way around the double assign to the model builder, without it I think the slice needs to be a pointer?)