Issue 5 optional values

Now if a randomizer returns null then the field is not set. OptionalRandomizer uses this feature to either return a random value from a delegate or to return null.

Careful: this pull request also contains the pull request for issue #3. Sorry for this.
Other randomizers do not provide static factory methods, I think the constructor is enough to be consistent with other implementations.