Nullable

I attempted to get a better `Nullable<T>` readability from (`source` is a `Nullable<int>`):
````c#
source.With(s => s.GetValueOrDefault() + 1); //s is Nullable<int>
````
to
````c#
source.With(s => s + 1); //s is int
````

Unfortunately, due to C# type inference limitations the best I could get is:
````c#
source.With((int s) => s + 1);
````

But, as could be seen in `DateTime` test, sometimes it could be avoided, leading to beautiful and pure code:
````c#
int result = source.With(s => s.Day);
````

It is up to you to decide whether it's worth the effort.