Tidying up some code and introducing optional arguments for the ViewOptions constructor

Please read the commit descriptions for a detailed overview of the changes. None of the commits affect how LoveSeat can be used, so developers don't need to change their code. These commits clean up the code of LoveSeat a bit (removing duplicate code, using C# optional arguments), and introduces a new feature (using optional arguments for the ViewOptions constructor, which allows you to write shorter and prettier code when passing ViewOptions to for instance the View method).

The commit 1448c04996e12e3dd3d61c527b4187126cb966ec can be ignored. I thought it was safe to change RawValues to RawRows, but forgot about the side-effects. This commit is reverted through 5cb704196253e11b7a3b85749a9ee997be7bfc61.