Negotiate status codes by media range.

This PR is to add support to the negotiation context (and corresponding extension methods) to map status codes to media ranges, in the same way that models can be mapped to media ranges.

There is one breaking change in this PR: `NegotiationContext#StatusCode` was renamed to `DefaultStatusCode` to be consistent with `DefaultModel`. I don't know how y'all feel about breaking changes at this point, but if you'd like to see this handled in a different way, just let me know.

Also, I tried to match the style of the existing code and adhere to the contribution guidelines, but if anything is amiss, just let me know and I'll fix it.

Finally, I'm sending this PR as a starting point for discussion, not expecting it to be just taken as-is. I fully expect you'll want to see changes, or might not want to take it all. That's cool. :relaxed:

## Why

I'm building a website with an API, using one route handler for both API and browser clients, and using content negotiation for the differences in response between the two. One example of how I'd use this:

```
Post["/members"] =
    _ =>
    {
        /* model binding, validation, and member creation omitted */

        // return 201 to API clients, but 303 to browsers
        return Negotiate
            .WithStatusCode(201)
            .WithHeader("Location", Paths.Member(member.Alias))
            .WithMediaRangeStatusCode("text/html", 303);
    };
```

I'll do something similar for DELETE requests, with a 204 to API clients but a 303 to browsers.

If there's a better way with what Nancy offers today, please let me know and I'll look at it. I certainly don't want to add needless complexity to the API.

## Testing

There were no unit tests around the negotiation context, so I didn't add any new ones. I did add several new functional tests. I'll do the follow manual testing today as I have time. Please let me know what other testing you'd like me to do.

- [ ] make application/json API calls when using media-range specific status codes
- [ ] make application/xml API calls when using media-range specific status codes
- [ ] hit pages via the browser when using media-range specific status codes
- [ ] make sure a simple site with simple views still works
- [ ] make sure a simple site with real response objects still works
- [ ] make sure model negotiation with no status code mappings still works