Check `[NotFilterable]` for collection properties in v4 `FilterQueryValidator`

nits:
- add another missing `default` case in a validation `switch` statement
- clean up "no default validation logic here" comments
Test more `AllowedFunction` binding and validation cases
- all()/any() of more element types
- arithmetic negate
- casts to more complex and entity types and from string to more types
- group inclusions
- validation of nested expressions

Clean tests up
- correct use of System.Web.Http.OData.Query.Expressions namespace in v4 tests
- improve test and data set names e.g. "Of" -> "If" and removing "Fails"
- test `Address` type only when using `Product` model

Test other flag properties in `ODataValidationSettings`
- remove `[Fact]` tests for specific flags and add `[Theory]` tests
- follow model of recently-added `AllowedFunctions` tests

nits
- make test data more consistent between v3 / v4 test classes
- change some "*Throw*" test methods to allow None; exception thrown regardless
- add missing `// Arrange` etc. comments
- Stream comes before String
- fix a few comment typos
- wrap a couple of long lines