[OC-6569] Rework generation of run_id to be in client

* Generate run_id on client and send to server on run begin
* Use SecureRandom for ID generation.  This will not work on Ruby < 1.8.7.
  On those platforms we disable reporting
* Use generated run_id in specs, checking it's passed through correctly
[OC-7356] Protocol Version for Reporting

- Add protocol version header
- Handle reporting protocl version mismatch error
- Clarify message when client protocol version is wrong for reporting
- Modify tests to have extra header passed into mocks
[OC-6939] Use start_time/end_time from chef-client

Set start_time/end_time in reporting start/end messages
only post exceptions if we've got the node setup
[OC-7370] Rename node_run begin action to start
The protocol for calling ResourceReporter has changed - now
run_started() must be called as well in order to set up the
state
Refactor of the protocol for initializing ResourceReporter

We now extract the node info from run_started, not node_load_completed
so we now don't need to have a callback on node_load_completed
Add start_time to end of run reporting message