Added an onNegotiated event that allows a user to modify negotiate values

#1638
Added tests to verify correctness of the onNegotiated event

- Added a test to verify that the event gets triggered and that you can
modify settings on it.

#1638
Added Negotiated event to the C# client

- Made the negotiated event take in the raw response string.  By default
the client deserializes the negotiate settings into a
NegotiationResponse, however if the user modifies the negotiate response
they may want to deserialize it into their own type of response.

#1638
Added functional test to verify that the negotiated event is triggered correctly

#1638
Modified the onNegotiated event to not allow setting modification

- Also modified the NegotiateFacts.js to account for not being able to
modify the settings

#1638