Api refactor

fixes #21
fixes #31

* Does not have a general `With(params string[] args)` method because I'm too lazy to write tests.
* Does not have a fancy pants `.Properties(new { Configuration = "Release"})` method because I don't know an easy way to do it.