Family Builder Pattern

This makes code for Family.getFor a lot more readable and less difficult to write.
There are 2 different places for those methods. Inside Family as static functions and in the builder class. Only the static functions call reset.
So every time you call Family.one(), Family.all(), or Family.exclude(), reset() is called and the builder instance is returned. The returned instance however has separate one(), all() and exclude() methods, which do not call reset()