SignatureGenerator.Filterer

I'm exploring ways to use the `SignatureGenerator`. There are several use cases where it would be good to only print a subset of the members/functions/values for an entity. This pull request enables that.

A fictional example is to print `Microsoft.FSharp.Linq.QueryBuilder` and all of its members/functions/values that begin with "Then":
```
let formatSymbol symbol =
    let xmlDoc xmlFile = []
    let openDeclarations = []
    let filterer = { 
        SignatureGenerator.Filterer.NoFilters with  
            MemberOrFunctionOrValueFilter = Some (fun m -> m.DisplayName.StartsWith "Then") }
    SignatureGenerator.formatSymbol xmlDoc 4 FSharpDisplayContext.Empty openDeclarations symbol filterer

let txt = formatSymbol entityQueryBuilder
```
```
[<Microsoft.FSharp.Core.Class>]
type QueryBuilder =
    [<Microsoft.FSharp.Core.CustomOperation("thenBy")>]
    member ThenBy : source:Microsoft.FSharp.Linq.QuerySource<'T,'Q> * keySelector:('T -> 'Key) -> Microsoft.FSharp.Linq.QuerySource<'T,'Q> when 'Key : comparison
    [<Microsoft.FSharp.Core.CustomOperation("thenByDescending")>]
    member ThenByDescending : source:Microsoft.FSharp.Linq.QuerySource<'T,'Q> * keySelector:('T -> 'Key) -> Microsoft.FSharp.Linq.QuerySource<'T,'Q> when 'Key : comparison
    [<Microsoft.FSharp.Core.CustomOperation("thenByNullable")>]
    member ThenByNullable : source:Microsoft.FSharp.Linq.QuerySource<'T,'Q> * keySelector:('T -> System.Nullable<'Key>) -> Microsoft.FSharp.Linq.QuerySource<'T,'Q> when 'Key : comparison and 'Key : (new : unit -> 'Key) and 'Key : struct and 'Key :> System.ValueType
    [<Microsoft.FSharp.Core.CustomOperation("thenByNullableDescending")>]
    member ThenByNullableDescending : source:Microsoft.FSharp.Linq.QuerySource<'T,'Q> * keySelector:('T -> System.Nullable<'Key>) -> Microsoft.FSharp.Linq.QuerySource<'T,'Q> when 'Key : comparison and 'Key : (new : unit -> 'Key) and 'Key : struct and 'Key :> System.ValueType
```

My immediate need is for diffing the public surface area of `FSharp.Core` `3.0`, `3.1` and `4.0`.
[Any benefit for targeting F# runtime for F# 4.0 or 3.1 instead of 3.0?]
(http://stackoverflow.com/questions/27363777/any-benefit-for-targeting-f-runtime-for-f-4-0-or-3-1-instead-of-3-0)

Other questions I have:
 * How do I prevent the types from being fully qualified. I tried without luck variations of `
let openDeclarations = [ "Microsoft.FSharp.Core"; "Microsoft.FSharp.Linq" ]`
 * How do I control the formatting so that there is a blank between members/functions/values?
Could you use indentation instead of `with` (which is from verbose mode) e.g.

```fsharp
type Filterer = 
    {
        MemberOrFunctionOrValueFilter: (FSharpMemberOrFunctionOrValue -> bool) option
    }
    static member NoFilters = { MemberOrFunctionOrValueFilter = None }
```