Modified the payload response for negotiate to be a dictionary instead of an anonymous object

- By being a dictionary the hub pipeline will then be able to modify/add
to the data

#1637
Changed the variable name payload to response
Added the BuildNegotiate method to the hub pipeline module

- This involved adding it to the hub pipline invoker and also adding a static method to the PersistentConnection to be called by the pipeline
#1637
Added HubPipelineFacts to test BuildNegotiate

- Added tests to verify Add/Modify/Delete tests for the BUildNegotiate
method.
- Also generalized the test file name so that it can be used to test the
other hub pipeline methods

#1637
Moved the BuildNegotiate piece to the HubDispatcher

- This also involved undoing the changes to PersistentConnection.cs
- Also removed the need for the HostContext to be passed through
#1637
Modified the build negotiate to be an action so it's inner func does not return a value

- For code review comments
#1637