Respond to bad requests with a 400 status code

- Previously bad requests caused PersistentConnection.ProcessRequest to throw
  resulting in a 500
- Respond with a 403 status code when the client changes identity
- No longer throwing on bad requests reduces extraneous error logging

#2450
Traces logged by TaskAsynceHelper.Catch are now warnings

- This should make it easier to filter out those traces

#2450
Swallowed exceptions generated by retrieving the process name when trying to kill the TestHost.
Merge branch 'release' into dev